close audio and hamlib instances on quit

This commit is contained in:
DJ2LS 2021-09-10 18:56:33 +02:00 committed by GitHub
parent 1e6d8e36fd
commit c230660c85
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 5 deletions

View file

@ -20,6 +20,8 @@ import static
import psutil import psutil
import sys import sys
import serial.tools.list_ports import serial.tools.list_ports
import atexit
#PORT = 3001 #PORT = 3001
#TNCPROCESS = 0 #TNCPROCESS = 0
#TNCSTARTED = False #TNCSTARTED = False
@ -43,10 +45,14 @@ def start_daemon():
daemon = socketserver.TCPServer(('0.0.0.0', PORT), CMDTCPRequestHandler) daemon = socketserver.TCPServer(('0.0.0.0', PORT), CMDTCPRequestHandler)
daemon.serve_forever() daemon.serve_forever()
finally: finally:
daemon.server_close() daemon.server_close()
class CMDTCPRequestHandler(socketserver.BaseRequestHandler): class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
def handle(self): def handle(self):
@ -165,10 +171,13 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
if DEBUG: 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: 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) 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)
static.TNCPROCESS = p#.pid atexit.register(process.terminate)
static.TNCPROCESS = process#.pid
static.TNCSTARTED = True static.TNCSTARTED = True
if received_json["type"] == 'SET' and received_json["command"] == 'STOPTNC': if received_json["type"] == 'SET' and received_json["command"] == 'STOPTNC':
@ -189,6 +198,7 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
# UPDATE LIST OF AUDIO DEVICES # UPDATE LIST OF AUDIO DEVICES
p = pyaudio.PyAudio() p = pyaudio.PyAudio()
atexit.register(p.terminate)
for i in range(0, p.get_device_count()): for i in range(0, p.get_device_count()):
maxInputChannels = p.get_device_info_by_host_api_device_index(0,i).get('maxInputChannels') 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__': if __name__ == '__main__':
# --------------------------------------------GET PARAMETER INPUTS # --------------------------------------------GET PARAMETER INPUTS
PARSER = argparse.ArgumentParser(description='Simons TEST TNC') PARSER = argparse.ArgumentParser(description='Simons TEST TNC')
PARSER.add_argument('--port', dest="socket_port", default=3001, help="Socket port", type=int) 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 = threading.Thread(target=start_daemon, name="daemon")
DAEMON_THREAD.start() DAEMON_THREAD.start()

View file

@ -16,6 +16,7 @@ import asyncio
import logging import logging
import time import time
import threading import threading
import atexit
import helpers import helpers
import static import static
@ -71,6 +72,7 @@ class RF():
print("running libcodec from EXTERNAL library") print("running libcodec from EXTERNAL library")
# --------------------------------------------CREATE PYAUDIO INSTANCE # --------------------------------------------CREATE PYAUDIO INSTANCE
self.p = pyaudio.PyAudio() self.p = pyaudio.PyAudio()
atexit.register(self.p.terminate)
# --------------------------------------------OPEN AUDIO CHANNEL RX # --------------------------------------------OPEN AUDIO CHANNEL RX
self.stream_rx = self.p.open(format=pyaudio.paInt16, self.stream_rx = self.p.open(format=pyaudio.paInt16,
channels=static.AUDIO_CHANNELS, channels=static.AUDIO_CHANNELS,
@ -158,6 +160,8 @@ class RF():
self.my_rig.open() self.my_rig.open()
atexit.register(self.my_rig.close)
# set rig mode to USB # set rig mode to USB
self.my_rig.set_mode(Hamlib.RIG_MODE_USB) self.my_rig.set_mode(Hamlib.RIG_MODE_USB)