Adding Flex message panel.

This commit is contained in:
Marat Fayzullin 2023-05-19 18:57:53 -04:00
parent 045ecc4e31
commit d75b28ee3f
7 changed files with 66 additions and 9 deletions

View File

@ -1,15 +1,17 @@
from csdr.chain.demodulator import ServiceDemodulator, DialFrequencyReceiver from csdr.chain.demodulator import ServiceDemodulator, DialFrequencyReceiver
from pycsdr.modules import FmDemod, AudioResampler from pycsdr.modules import FmDemod, AudioResampler
from mmon.modules import Flex from mmon.modules import Flex
from owrx.multimon import MultimonParser
class FlexDemodulator(ServiceDemodulator, DialFrequencyReceiver): class FlexDemodulator(ServiceDemodulator, DialFrequencyReceiver):
def __init__(self): def __init__(self, service: bool = False):
self.sampleRate = 24000 self.sampleRate = 24000
self.parser = MultimonParser(service=service)
workers = [ workers = [
FmDemod(), FmDemod(),
AudioResampler(self.sampleRate, 22050), AudioResampler(self.sampleRate, 22050),
Flex(), Flex(),
self.parser,
] ]
super().__init__(workers) super().__init__(workers)
@ -20,5 +22,5 @@ class FlexDemodulator(ServiceDemodulator, DialFrequencyReceiver):
return False return False
def setDialFrequency(self, frequency: int) -> None: def setDialFrequency(self, frequency: int) -> None:
pass self.parse.setDialFrequency(frequency)

View File

@ -1198,6 +1198,16 @@ img.openwebrx-mirror-img
white-space: pre; white-space: pre;
} }
#openwebrx-panel-flex-message .address {
width: 100px;
}
#openwebrx-panel-flex-message .message {
width: 486px;
max-width: 486px;
white-space: pre;
}
#openwebrx-panel-sstv-message { #openwebrx-panel-sstv-message {
height: 310px; height: 310px;
width: 365px; width: 365px;

View File

@ -83,6 +83,7 @@
<div class="openwebrx-panel openwebrx-message-panel" id="openwebrx-panel-js8-message" style="display:none; width: 619px;" data-panel-name="js8-message"></div> <div class="openwebrx-panel openwebrx-message-panel" id="openwebrx-panel-js8-message" style="display:none; width: 619px;" data-panel-name="js8-message"></div>
<div class="openwebrx-panel openwebrx-message-panel" id="openwebrx-panel-packet-message" style="display: none; width: 619px;" data-panel-name="aprs-message"></div> <div class="openwebrx-panel openwebrx-message-panel" id="openwebrx-panel-packet-message" style="display: none; width: 619px;" data-panel-name="aprs-message"></div>
<div class="openwebrx-panel openwebrx-message-panel" id="openwebrx-panel-pocsag-message" style="display: none; width: 619px;" data-panel-name="pocsag-message"></div> <div class="openwebrx-panel openwebrx-message-panel" id="openwebrx-panel-pocsag-message" style="display: none; width: 619px;" data-panel-name="pocsag-message"></div>
<div class="openwebrx-panel openwebrx-message-panel" id="openwebrx-panel-flex-message" style="display: none; width: 619px;" data-panel-name="flex-message"></div>
<div class="openwebrx-panel openwebrx-meta-panel" id="openwebrx-panel-metadata-m17" style="display: none;" data-panel-name="metadata-m17"> <div class="openwebrx-panel openwebrx-meta-panel" id="openwebrx-panel-metadata-m17" style="display: none;" data-panel-name="metadata-m17">
<div class="openwebrx-meta-slot"> <div class="openwebrx-meta-slot">
<div class="openwebrx-meta-user-image"> <div class="openwebrx-meta-user-image">

View File

@ -5,7 +5,7 @@ function Filter(demodulator) {
Filter.prototype.getLimits = function() { Filter.prototype.getLimits = function() {
var max_bw; var max_bw;
if (['pocsag', 'packet', 'ais'].indexOf(this.demodulator.get_secondary_demod()) >= 0) { if (['pocsag', 'flex', 'packet', 'ais'].indexOf(this.demodulator.get_secondary_demod()) >= 0) {
max_bw = 12500; max_bw = 12500;
} else if (['dmr', 'dstar', 'nxdn', 'ysf', 'm17'].indexOf(this.demodulator.get_modulation()) >= 0) { } else if (['dmr', 'dstar', 'nxdn', 'ysf', 'm17'].indexOf(this.demodulator.get_modulation()) >= 0) {
max_bw = 6250; max_bw = 6250;

View File

@ -166,6 +166,7 @@ DemodulatorPanel.prototype.updatePanels = function() {
toggle_panel("openwebrx-panel-js8-message", modulation == "js8"); toggle_panel("openwebrx-panel-js8-message", modulation == "js8");
toggle_panel("openwebrx-panel-packet-message", ["packet", "ais"].indexOf(modulation) >= 0); toggle_panel("openwebrx-panel-packet-message", ["packet", "ais"].indexOf(modulation) >= 0);
toggle_panel("openwebrx-panel-pocsag-message", modulation === "pocsag"); toggle_panel("openwebrx-panel-pocsag-message", modulation === "pocsag");
toggle_panel("openwebrx-panel-flex-message", modulation === "flex");
toggle_panel("openwebrx-panel-sstv-message", modulation === "sstv"); toggle_panel("openwebrx-panel-sstv-message", modulation === "sstv");
toggle_panel("openwebrx-panel-fax-message", modulation === "fax"); toggle_panel("openwebrx-panel-fax-message", modulation === "fax");

View File

@ -270,6 +270,47 @@ $.fn.pocsagMessagePanel = function() {
return this.data('panel'); return this.data('panel');
}; };
FlexMessagePanel = function(el) {
MessagePanel.call(this, el);
this.initClearTimer();
}
FlexMessagePanel.prototype = new MessagePanel();
FlexMessagePanel.prototype.supportsMessage = function(message) {
return message['mode'] === 'Flex';
};
FlexMessagePanel.prototype.render = function() {
$(this.el).append($(
'<table>' +
'<thead><tr>' +
'<th class="address">Address</th>' +
'<th class="message">Message</th>' +
'</tr></thead>' +
'<tbody></tbody>' +
'</table>'
));
};
FlexMessagePanel.prototype.pushMessage = function(msg) {
var $b = $(this.el).find('tbody');
$b.append($(
'<tr>' +
'<td class="address">' + msg.address + '</td>' +
'<td class="message">' + msg.message + '</td>' +
'</tr>'
));
$b.scrollTop($b[0].scrollHeight);
};
$.fn.flexMessagePanel = function() {
if (!this.data('panel')) {
this.data('panel', new FlexMessagePanel(this));
}
return this.data('panel');
};
SstvMessagePanel = function(el) { SstvMessagePanel = function(el) {
MessagePanel.call(this, el); MessagePanel.call(this, el);
this.initClearTimer(); this.initClearTimer();

View File

@ -1166,11 +1166,12 @@ function on_ws_recv(evt) {
case 'secondary_demod': case 'secondary_demod':
var value = json['value']; var value = json['value'];
var panels = [ var panels = [
$("#openwebrx-panel-wsjt-message").wsjtMessagePanel(), $("#openwebrx-panel-wsjt-message").wsjtMessagePanel(),
$('#openwebrx-panel-packet-message').packetMessagePanel(), $('#openwebrx-panel-packet-message').packetMessagePanel(),
$('#openwebrx-panel-pocsag-message').pocsagMessagePanel(), $('#openwebrx-panel-pocsag-message').pocsagMessagePanel(),
$('#openwebrx-panel-sstv-message').sstvMessagePanel(), $('#openwebrx-panel-flex-message').flexMessagePanel(),
$('#openwebrx-panel-fax-message').faxMessagePanel(), $('#openwebrx-panel-sstv-message').sstvMessagePanel(),
$('#openwebrx-panel-fax-message').faxMessagePanel(),
$("#openwebrx-panel-js8-message").js8() $("#openwebrx-panel-js8-message").js8()
]; ];
if (!panels.some(function(panel) { if (!panels.some(function(panel) {
@ -1843,6 +1844,7 @@ function secondary_demod_init() {
$('#openwebrx-panel-wsjt-message').wsjtMessagePanel(); $('#openwebrx-panel-wsjt-message').wsjtMessagePanel();
$('#openwebrx-panel-packet-message').packetMessagePanel(); $('#openwebrx-panel-packet-message').packetMessagePanel();
$('#openwebrx-panel-pocsag-message').pocsagMessagePanel(); $('#openwebrx-panel-pocsag-message').pocsagMessagePanel();
$('#openwebrx-panel-flex-message').pocsagMessagePanel();
$('#openwebrx-panel-sstv-message').sstvMessagePanel(); $('#openwebrx-panel-sstv-message').sstvMessagePanel();
$('#openwebrx-panel-fax-message').faxMessagePanel(); $('#openwebrx-panel-fax-message').faxMessagePanel();
$('#openwebrx-panel-js8-message').js8(); $('#openwebrx-panel-js8-message').js8();