From c230660c85c9b80206d8c4cf4e08846757771918 Mon Sep 17 00:00:00 2001 From: DJ2LS <75909252+DJ2LS@users.noreply.github.com> Date: Fri, 10 Sep 2021 18:56:33 +0200 Subject: [PATCH] close audio and hamlib instances on quit --- tnc/daemon.py | 20 +++++++++++++++----- tnc/modem.py | 4 ++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/tnc/daemon.py b/tnc/daemon.py index b1e1220a..6d7f6842 100644 --- a/tnc/daemon.py +++ b/tnc/daemon.py @@ -20,6 +20,8 @@ import static import psutil import sys import serial.tools.list_ports +import atexit + #PORT = 3001 #TNCPROCESS = 0 #TNCSTARTED = False @@ -43,10 +45,14 @@ def start_daemon(): daemon = socketserver.TCPServer(('0.0.0.0', PORT), CMDTCPRequestHandler) daemon.serve_forever() + finally: daemon.server_close() + + + class CMDTCPRequestHandler(socketserver.BaseRequestHandler): def handle(self): @@ -165,10 +171,13 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler): if DEBUG: - p = subprocess.Popen("exec python3 main.py --rx "+ str(rx_audio) +" --tx "+ str(tx_audio) +" --deviceport "+ str(deviceport) +" --deviceid "+ str(deviceid) + " --serialspeed "+ str(serialspeed) + " --ptt "+ str(ptt), shell=True) + process = subprocess.Popen("exec python3 main.py --rx "+ str(rx_audio) +" --tx "+ str(tx_audio) +" --deviceport "+ str(deviceport) +" --deviceid "+ str(deviceid) + " --serialspeed "+ str(serialspeed) + " --ptt "+ str(ptt), shell=True) + atexit.register(process.terminate) else: - p = subprocess.Popen("exec ./tnc --rx "+ str(rx_audio) +" --tx "+ str(tx_audio) +" --deviceport "+ str(deviceport) +" --deviceid "+ str(deviceid) + " --serialspeed "+ str(serialspeed) + " --ptt "+ str(ptt), shell=True) - static.TNCPROCESS = p#.pid + process = subprocess.Popen("exec ./tnc --rx "+ str(rx_audio) +" --tx "+ str(tx_audio) +" --deviceport "+ str(deviceport) +" --deviceid "+ str(deviceid) + " --serialspeed "+ str(serialspeed) + " --ptt "+ str(ptt), shell=True) + atexit.register(process.terminate) + + static.TNCPROCESS = process#.pid static.TNCSTARTED = True if received_json["type"] == 'SET' and received_json["command"] == 'STOPTNC': @@ -189,6 +198,7 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler): # UPDATE LIST OF AUDIO DEVICES p = pyaudio.PyAudio() + atexit.register(p.terminate) for i in range(0, p.get_device_count()): maxInputChannels = p.get_device_info_by_host_api_device_index(0,i).get('maxInputChannels') @@ -229,8 +239,7 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler): if __name__ == '__main__': - - + # --------------------------------------------GET PARAMETER INPUTS PARSER = argparse.ArgumentParser(description='Simons TEST TNC') PARSER.add_argument('--port', dest="socket_port", default=3001, help="Socket port", type=int) @@ -244,6 +253,7 @@ if __name__ == '__main__': DAEMON_THREAD = threading.Thread(target=start_daemon, name="daemon") DAEMON_THREAD.start() + diff --git a/tnc/modem.py b/tnc/modem.py index 843f05d5..3f305c28 100644 --- a/tnc/modem.py +++ b/tnc/modem.py @@ -16,6 +16,7 @@ import asyncio import logging import time import threading +import atexit import helpers import static @@ -71,6 +72,7 @@ class RF(): print("running libcodec from EXTERNAL library") # --------------------------------------------CREATE PYAUDIO INSTANCE self.p = pyaudio.PyAudio() + atexit.register(self.p.terminate) # --------------------------------------------OPEN AUDIO CHANNEL RX self.stream_rx = self.p.open(format=pyaudio.paInt16, channels=static.AUDIO_CHANNELS, @@ -158,6 +160,8 @@ class RF(): self.my_rig.open() + atexit.register(self.my_rig.close) + # set rig mode to USB self.my_rig.set_mode(Hamlib.RIG_MODE_USB)