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

View File

@ -1198,6 +1198,16 @@ img.openwebrx-mirror-img
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 {
height: 310px;
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-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-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-meta-slot">
<div class="openwebrx-meta-user-image">

View File

@ -5,7 +5,7 @@ function Filter(demodulator) {
Filter.prototype.getLimits = function() {
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;
} else if (['dmr', 'dstar', 'nxdn', 'ysf', 'm17'].indexOf(this.demodulator.get_modulation()) >= 0) {
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-packet-message", ["packet", "ais"].indexOf(modulation) >= 0);
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-fax-message", modulation === "fax");

View File

@ -270,6 +270,47 @@ $.fn.pocsagMessagePanel = function() {
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) {
MessagePanel.call(this, el);
this.initClearTimer();

View File

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