mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
some mire linting..
This commit is contained in:
parent
09786e8b28
commit
36a50fa02b
18
.github/workflows/build_multiplatform.yml
vendored
18
.github/workflows/build_multiplatform.yml
vendored
|
@ -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
|
||||
|
|
|
@ -266,7 +266,7 @@ function close_sub_processes() {
|
|||
daemonProcess.kill();
|
||||
}
|
||||
} catch (e) {
|
||||
mainLog.error(e);
|
||||
console.log(e);
|
||||
}
|
||||
|
||||
console.log("closing modem and daemon");
|
||||
|
|
|
@ -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()
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 +
|
||||
'"}';
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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])}"
|
||||
|
|
|
@ -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!")
|
||||
|
|
|
@ -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!")
|
||||
|
|
Loading…
Reference in a new issue