some mire linting..

This commit is contained in:
DJ2LS 2023-10-22 11:13:02 +02:00
parent 09786e8b28
commit 36a50fa02b
9 changed files with 19 additions and 187 deletions

View file

@ -8,7 +8,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, ubuntu-22.04, macos-latest, macos-latest-large, macos-12]
os: [ubuntu-20.04, ubuntu-22.04, macos-latest, macos-12]
platform: [{name: "native"}, {name: "Windows", file: "dll"}]
architecture: [i686-w64-mingw32, x86_64-w64-mingw32]
include:
@ -34,13 +34,6 @@ jobs:
generator: Unix Makefiles
shell: bash
- os: macos-latest-large
libcodec2_name: libcodec2.1.2.dylib
libcodec2_os_name: libcodec2_macos-latest-m1
libcodec2_filetype: dylib
generator: Unix Makefiles
shell: bash
- os: macos-12
libcodec2_name: libcodec2.1.2.dylib
libcodec2_os_name: libcodec2_macos-12
@ -201,7 +194,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, macos-latest, macos-latest-large, windows-latest]
os: [ubuntu-20.04, macos-latest, windows-latest]
include:
- os: ubuntu-20.04
zip_name: ubuntu_modem
@ -217,13 +210,6 @@ jobs:
modem_binary_name: freedata-modem
electron_parameters: "-p always"
- os: macos-latest-large
zip_name: macos_modem_m1
generator: Unix Makefiles
daemon_binary_name: freedata-daemon
modem_binary_name: freedata-modem
electron_parameters: "-p always"
- os: windows-latest
zip_name: windows_modem
generator: Visual Studio 16 2019

View file

@ -266,7 +266,7 @@ function close_sub_processes() {
daemonProcess.kill();
}
} catch (e) {
mainLog.error(e);
console.log(e);
}
console.log("closing modem and daemon");

View file

@ -1,149 +0,0 @@
#!/usr/bin/env python
# Copyright (c) 2019 Jeppe Ledet-Pedersen
# This software is released under the MIT license.
# See the LICENSE file for further details.
import sys
import json
import argparse
from gnuradio import gr
from gnuradio import uhd
from gnuradio.fft import logpwrfft
import numpy as np
from gevent.pywsgi import WSGIServer
from geventwebsocket import WebSocketError
from geventwebsocket.handler import WebSocketHandler
from bottle import request, Bottle, abort, static_file
app = Bottle()
connections = set()
opts = {}
@app.route('/websocket')
def handle_websocket():
wsock = request.environ.get('wsgi.websocket')
if not wsock:
abort(400, 'Expected WebSocket request.')
connections.add(wsock)
# Send center frequency and span
wsock.send(json.dumps(opts))
while True:
try:
wsock.receive()
except WebSocketError:
break
connections.remove(wsock)
@app.route('/')
def index():
return static_file('index.html', root='.')
@app.route('/<filename>')
def static(filename):
return static_file(filename, root='.')
class fft_broadcast_sink(gr.sync_block):
def __init__(self, fft_size):
gr.sync_block.__init__(self,
name="plotter",
in_sig=[(np.float32, fft_size)],
out_sig=[])
def work(self, input_items, output_items):
ninput_items = len(input_items[0])
for bins in input_items[0]:
p = np.around(bins).astype(int)
p = np.fft.fftshift(p)
for c in connections.copy():
try:
c.send(json.dumps({'s': p.tolist()}, separators=(',', ':')))
except Exception:
connections.remove(c)
self.consume(0, ninput_items)
return 0
class fft_receiver(gr.top_block):
def __init__(self, samp_rate, freq, gain, fft_size, framerate):
gr.top_block.__init__(self, "Top Block")
self.usrp = uhd.usrp_source(
",".join(("", "")),
uhd.stream_args(
cpu_format="fc32",
channels=range(1),
),
)
self.usrp.set_samp_rate(samp_rate)
self.usrp.set_center_freq(freq, 0)
self.usrp.set_gain(gain, 0)
self.fft = logpwrfft.logpwrfft_c(
sample_rate=samp_rate,
fft_size=fft_size,
ref_scale=1,
frame_rate=framerate,
avg_alpha=1,
average=False,
)
self.fft_broadcast = fft_broadcast_sink(fft_size)
self.connect((self.fft, 0), (self.fft_broadcast, 0))
self.connect((self.usrp, 0), (self.fft, 0))
def main():
parser = argparse.ArgumentParser()
parser.add_argument('-s', '--sample-rate', type=float, default=40e6)
parser.add_argument('-f', '--frequency', type=float, default=940e6)
parser.add_argument('-g', '--gain', type=float, default=40)
parser.add_argument('-n', '--fft-size', type=int, default=4096)
parser.add_argument('-r', '--frame-rate', type=int, default=25)
args = parser.parse_args()
if gr.enable_realtime_scheduling() != gr.RT_OK or 0:
print("Error: failed to enable real-time scheduling.")
tb = fft_receiver(
samp_rate=args.sample_rate,
freq=args.frequency,
gain=args.gain,
fft_size=args.fft_size,
framerate=args.frame_rate
)
tb.start()
opts['center'] = args.frequency
opts['span'] = args.sample_rate
server = WSGIServer(("0.0.0.0", 8000), app,
handler_class=WebSocketHandler)
try:
server.serve_forever()
except Exception:
sys.exit(0)
tb.stop()
tb.wait()
if __name__ == '__main__':
main()

View file

@ -16,29 +16,25 @@ const settings = useSettingsStore(pinia);
// ---------------------------------
console.log(process.env);
var appDataFolder = "undefined";
if (typeof process.env["APPDATA"] !== "undefined") {
var appDataFolder = process.env["APPDATA"];
appDataFolder = process.env["APPDATA"];
console.log(appDataFolder);
} else {
switch (process.platform) {
case "darwin":
var appDataFolder = process.env["HOME"] + "/Library/Application Support";
appDataFolder = process.env["HOME"] + "/Library/Application Support";
console.log(appDataFolder);
break;
case "linux":
var appDataFolder = process.env["HOME"] + "/.config";
appDataFolder = process.env["HOME"] + "/.config";
console.log(appDataFolder);
break;
case "linux":
var appDataFolder = "undefined";
break;
case "win32":
var appDataFolder = "undefined";
appDataFolder = "undefined";
break;
default:
var appDataFolder = "undefined";
appDataFolder = "undefined";
break;
}
}

View file

@ -425,7 +425,6 @@ client.on("data", function (socketdata) {
break;
}
break;
case "waiting":
// ARQ waiting
@ -536,7 +535,7 @@ export function sendPing(dxcallsign) {
// Send Mesh Ping
//exports.sendMeshPing = function (dxcallsign) {
function sendMeshPing(dxcallsign) {
command =
var command =
'{"type" : "mesh", "command" : "ping", "dxcallsign" : "' +
dxcallsign +
'"}';
@ -792,7 +791,7 @@ export function stopBeacon() {
// OPEN ARQ SESSION
export function connectARQ(dxcallsign) {
command =
var command =
'{"type" : "arq", "command" : "connect", "dxcallsign": "' +
dxcallsign +
'", "attempts": "10"}';
@ -853,7 +852,7 @@ export function sendBroadcastChannel(obj) {
);
console.log(data.length);
let payload = data;
command =
var command =
'{"type" : "fec", "command" : "transmit", "mode": "datac4", "wakeup": "True", "payload" : "' +
payload +
'"}';

View file

@ -28,7 +28,7 @@ from static import FRAME_TYPE
import structlog
import ujson as json
import tci
# FIXME: used for def transmit_morse
# FIXME used for def transmit_morse
# import cw
from queues import DATA_QUEUE_RECEIVED, MODEM_RECEIVED_QUEUE, MODEM_TRANSMIT_QUEUE, RIGCTLD_COMMAND_QUEUE, \
AUDIO_RECEIVED_QUEUE, AUDIO_TRANSMIT_QUEUE, MESH_RECEIVED_QUEUE
@ -1313,7 +1313,7 @@ class RF:
raise ZeroDivisionError
AudioParam.audio_dbfs = 20 * np.log10(rms / 32768)
except Exception as e:
# FIXME: Disabled for cli cleanup
# FIXME Disabled for cli cleanup
#self.log.warning(
# "[MDM] fft calculation error - please check your audio setup",
# e=e,

View file

@ -1275,8 +1275,8 @@ def send_daemon_state():
# print(f"modem closed with code: {retcode_modem}")
Daemon.modemstarted = False
except Exception:
pass
except Exception as err:
log.warning("[DMN] error", e=err)
try:
python_version = f"{str(sys.version_info[0])}.{str(sys.version_info[1])}"

View file

@ -265,7 +265,7 @@ def t_datac13_2(
log.info("t_datac13_2:", RXCHANNEL=modem.RXCHANNEL)
log.info("t_datac13_2:", TXCHANNEL=modem.TXCHANNEL)
# TODO: Why do we need this when calling CQ?
# TODO Why do we need this when calling CQ?
#if "cq" in data:
# t_data = {"type": "arq", "command": "stop_transmission"}
# sock.ThreadedTCPRequestHandler.process_modem_commands(None,json.dumps(t_data, indent=None))
@ -304,6 +304,6 @@ def t_datac13_2(
assert item in str(
sock.SOCKET_QUEUE.queue
), f"{item} not found in {str(sock.SOCKET_QUEUE.queue)}"
# TODO: Not sure why we need this for every test run
# TODO Not sure why we need this for every test run
# assert '"arq":"session","status":"close"' in str(sock.SOCKET_QUEUE.queue)
log.warning("station2: Exiting!")

View file

@ -306,6 +306,6 @@ def t_datac13_2(
assert item not in str(
sock.SOCKET_QUEUE.queue
), f"{item} found in {str(sock.SOCKET_QUEUE.queue)}"
# TODO: Not sure why we need this for every test run
# TODO Not sure why we need this for every test run
# assert '"arq":"session","status":"close"' in str(sock.SOCKET_QUEUE.queue)
log.warning("station2: Exiting!")