FreeDATA/__main__.py

92 lines
2.5 KiB
Python
Raw Normal View History

2020-12-12 18:59:37 +00:00
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Dec 11 16:54:35 2020
@author: DJ2LS
"""
import sys
import logging
import argparse
import socketserver
import freedv
import sound
import tnc
import commands
def main():
parser = argparse.ArgumentParser(description='Simons TEST TNC')
parser.add_argument('--rx-sound-device', dest="audio_input_device", default=False, help="The sound card used to rx.", type=int)
parser.add_argument('--tx-sound-device', dest="audio_output_device", default=False, help="The sound card used to tx.", type=int)
parser.add_argument('--list-sound-device', dest="list_sound_devices", action='store_true', help="List audio devices")
parser.add_argument('--port', dest="socket_port", default=9000, help="Set the port, the socket is listening on.", type=int)
args = parser.parse_args()
if args.list_sound_devices:
for line in commands.Helpers.getAudioDevices():
print(line)
sys.exit(0)
logger = logging.getLogger()
logger.setLevel("INFO") #DEBUG>INFO>WARNING>ERROR>CRITICAL
logger.info("SIMONS ERSTES TNC PROGRAMM....DURCHHALTEN!")
#LADE FreeDV Klasse sonst Fehler
try:
modem = freedv.FreeDV()
except OSError:
logger.error("FREEDV NICHT GEFUNDEN")
sys.exit(0)
#LADE Audio Klasse sonst Fehler
try:
audio = sound.Audio(
defaultFrames = 1024 * 8,
audio_input_device=args.audio_input_device,
audio_output_device=args.audio_output_device,
tx_sample_state = None,
audio_sample_rate=48000,
modem_sample_rate=8000,
frames_per_buffer=1024,
audio_channels=1,
)
audio.Record()
except OSError:
logger.error("AUDIO NICHT GEFUNDEN")
sys.exit(0)
#LADE TNC Klasse sonst Fehler
try:
HOST, PORT = "localhost", args.socket_port
try:
logger.info("Starting SOCKET SERVER")
server = socketserver.TCPServer((HOST, PORT), tnc.MyTCPHandler)
server.serve_forever()
finally:
server.server_close()
except OSError:
logger.error("TNC NICHT GEFUNDEN")
sys.exit(0)
####################### TEST BEREICH ############################
#################################################################
if __name__ == "__main__":
main()