2020-12-26 10:02:14 +00:00
|
|
|
#!/usr/bin/python3
|
2020-12-23 16:48:22 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
|
|
Created on Tue Dec 22 16:58:45 2020
|
|
|
|
|
|
|
|
@author: DJ2LS
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
2021-03-11 17:03:48 +00:00
|
|
|
|
2020-12-23 17:25:50 +00:00
|
|
|
import argparse
|
2021-02-15 15:33:43 +00:00
|
|
|
import threading
|
2021-05-13 15:11:26 +00:00
|
|
|
import static
|
2022-01-06 21:15:14 +00:00
|
|
|
import socketserver
|
2022-01-05 13:15:59 +00:00
|
|
|
import helpers
|
2022-01-07 10:25:28 +00:00
|
|
|
import data_handler
|
|
|
|
import structlog
|
|
|
|
import log_handler
|
|
|
|
import modem
|
2022-01-07 17:02:15 +00:00
|
|
|
import sys
|
2021-11-18 18:40:22 +00:00
|
|
|
|
|
|
|
|
2021-02-15 15:33:43 +00:00
|
|
|
if __name__ == '__main__':
|
|
|
|
|
2021-03-12 13:14:36 +00:00
|
|
|
# --------------------------------------------GET PARAMETER INPUTS
|
2022-01-05 13:15:59 +00:00
|
|
|
PARSER = argparse.ArgumentParser(description='FreeDATA TNC')
|
|
|
|
PARSER.add_argument('--mycall', dest="mycall", default="AA0AA", help="My callsign", type=str)
|
|
|
|
PARSER.add_argument('--mygrid', dest="mygrid", default="JN12AA", help="My gridsquare", type=str)
|
2021-03-11 17:03:48 +00:00
|
|
|
PARSER.add_argument('--rx', dest="audio_input_device", default=0, help="listening sound card", type=int)
|
|
|
|
PARSER.add_argument('--tx', dest="audio_output_device", default=0, help="transmitting sound card", type=int)
|
2021-03-12 13:14:36 +00:00
|
|
|
PARSER.add_argument('--port', dest="socket_port", default=3000, help="Socket port", type=int)
|
2021-12-26 08:20:58 +00:00
|
|
|
PARSER.add_argument('--deviceport', dest="hamlib_device_port", default="/dev/ttyUSB0", help="Hamlib device port", type=str)
|
|
|
|
PARSER.add_argument('--devicename', dest="hamlib_device_name", default=2028, help="Hamlib device name", type=str)
|
2021-07-25 14:34:28 +00:00
|
|
|
PARSER.add_argument('--serialspeed', dest="hamlib_serialspeed", default=9600, help="Serialspeed", type=str)
|
2021-09-13 18:01:39 +00:00
|
|
|
PARSER.add_argument('--pttprotocol', dest="hamlib_ptt_type", default='RTS', help="PTT Type", type=str)
|
|
|
|
PARSER.add_argument('--pttport', dest="hamlib_ptt_port", default="/dev/ttyUSB0", help="PTT Port", type=str)
|
2021-12-27 11:30:43 +00:00
|
|
|
PARSER.add_argument('--data_bits', dest="hamlib_data_bits", default="8", help="Hamlib data bits", type=str)
|
|
|
|
PARSER.add_argument('--stop_bits', dest="hamlib_stop_bits", default="1", help="Hamlib stop bits", type=str)
|
|
|
|
PARSER.add_argument('--handshake', dest="hamlib_handshake", default="None", help="Hamlib handshake", type=str)
|
2022-01-18 18:38:05 +00:00
|
|
|
PARSER.add_argument('--radiocontrol', dest="hamlib_radiocontrol", default="direct", help="Set how you want to control your radio")
|
|
|
|
PARSER.add_argument('--rigctld_port', dest="rigctld_port", default="direct", help="Set rigctld port")
|
|
|
|
PARSER.add_argument('--rigctld_ip', dest="rigctld_ip", default="direct", help="Set rigctld ip")
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-07-10 21:27:33 +00:00
|
|
|
|
2021-03-11 17:03:48 +00:00
|
|
|
ARGS = PARSER.parse_args()
|
2022-01-05 13:15:59 +00:00
|
|
|
|
|
|
|
static.MYCALLSIGN = bytes(ARGS.mycall, 'utf-8')
|
2022-01-24 18:42:59 +00:00
|
|
|
static.MYCALLSIGN_CRC = helpers.get_crc_16(static.MYCALLSIGN)
|
2022-01-05 13:15:59 +00:00
|
|
|
static.MYGRID = bytes(ARGS.mygrid, 'utf-8')
|
|
|
|
|
2021-03-11 17:03:48 +00:00
|
|
|
static.AUDIO_INPUT_DEVICE = ARGS.audio_input_device
|
|
|
|
static.AUDIO_OUTPUT_DEVICE = ARGS.audio_output_device
|
|
|
|
static.PORT = ARGS.socket_port
|
2021-12-26 08:20:58 +00:00
|
|
|
static.HAMLIB_DEVICE_NAME = ARGS.hamlib_device_name
|
2021-05-09 09:36:08 +00:00
|
|
|
static.HAMLIB_DEVICE_PORT = ARGS.hamlib_device_port
|
2021-07-10 21:27:33 +00:00
|
|
|
static.HAMLIB_PTT_TYPE = ARGS.hamlib_ptt_type
|
2021-12-26 14:25:35 +00:00
|
|
|
static.HAMLIB_PTT_PORT = ARGS.hamlib_ptt_port
|
2021-07-25 14:34:28 +00:00
|
|
|
static.HAMLIB_SERIAL_SPEED = ARGS.hamlib_serialspeed
|
2021-12-27 11:30:43 +00:00
|
|
|
static.HAMLIB_DATA_BITS = ARGS.hamlib_data_bits
|
|
|
|
static.HAMLIB_STOP_BITS = ARGS.hamlib_stop_bits
|
2021-12-28 16:05:48 +00:00
|
|
|
static.HAMLIB_HANDSHAKE = ARGS.hamlib_handshake
|
2022-01-18 18:38:05 +00:00
|
|
|
static.HAMLIB_RADIOCONTROL = ARGS.hamlib_radiocontrol
|
|
|
|
static.HAMLIB_RGICTLD_IP = ARGS.rigctld_ip
|
|
|
|
static.HAMLIB_RGICTLD_PORT = ARGS.rigctld_port
|
2022-01-07 16:42:11 +00:00
|
|
|
|
2021-05-13 15:11:26 +00:00
|
|
|
# we need to wait until we got all parameters from argparse first before we can load the other modules
|
|
|
|
import sock
|
|
|
|
|
2021-05-09 10:01:42 +00:00
|
|
|
# config logging
|
2021-11-18 18:40:22 +00:00
|
|
|
log_handler.setup_logging("tnc")
|
2022-01-10 08:06:08 +00:00
|
|
|
structlog.get_logger("structlog").info("[TNC] Starting FreeDATA", author="DJ2LS", year="2022", version="0.1")
|
2022-01-20 19:38:56 +00:00
|
|
|
|
2022-01-07 10:25:28 +00:00
|
|
|
# start data handler
|
|
|
|
data_handler.DATA()
|
|
|
|
|
|
|
|
# start modem
|
|
|
|
modem = modem.RF()
|
|
|
|
|
2022-01-20 19:38:56 +00:00
|
|
|
|
2021-03-12 13:14:36 +00:00
|
|
|
# --------------------------------------------START CMD SERVER
|
2021-02-16 21:41:06 +00:00
|
|
|
|
2022-01-06 21:15:14 +00:00
|
|
|
try:
|
|
|
|
structlog.get_logger("structlog").info("[TNC] Starting TCP/IP socket", port=static.PORT)
|
|
|
|
# https://stackoverflow.com/a/16641793
|
|
|
|
socketserver.TCPServer.allow_reuse_address = True
|
|
|
|
cmdserver = sock.ThreadedTCPServer((static.HOST, static.PORT), sock.ThreadedTCPRequestHandler)
|
|
|
|
server_thread = threading.Thread(target=cmdserver.serve_forever)
|
|
|
|
server_thread.daemon = True
|
|
|
|
server_thread.start()
|
|
|
|
|
|
|
|
except Exception as e:
|
|
|
|
structlog.get_logger("structlog").error("[TNC] Starting TCP/IP socket failed", port=static.PORT, e=e)
|
|
|
|
|