237 lines
8.5 KiB
Python
237 lines
8.5 KiB
Python
"""
|
|
@brief This file transfers definitions of global variables to the user.
|
|
@details Template configuration file. Copy this folder to the TMTC commander root and adapt
|
|
it to your needs.
|
|
"""
|
|
|
|
import enum
|
|
import argparse
|
|
|
|
|
|
# All globals can be added here and will be part of a globals dictionary.
|
|
from config.tmtcc_definitions import ServiceList, ModeList
|
|
|
|
from tmtc_core.com_if.tmtcc_serial_com_if import SerialCommunicationType
|
|
from tmtc_core.com_if.tmtcc_serial_utilities import determine_com_port
|
|
from tmtc_core.core.tmtc_core_definitions import ComInterfaces
|
|
from tmtc_core.utility.tmtcc_logger import get_logger
|
|
|
|
|
|
class GlobalIds(enum.Enum):
|
|
from enum import auto
|
|
# Generic parameters
|
|
APID = auto()
|
|
MODE = auto()
|
|
SERVICE = auto()
|
|
SERVICELIST = auto()
|
|
COM_IF = auto()
|
|
OP_CODE = auto()
|
|
TM_TIMEOUT = auto()
|
|
|
|
# Miscellaneous
|
|
DISPLAY_MODE = auto()
|
|
USE_LISTENER_AFTER_OP = auto()
|
|
PRINT_HK = auto()
|
|
PRINT_TM = auto()
|
|
PRINT_RAW_TM = auto()
|
|
PRINT_TO_FILE = auto()
|
|
RESEND_TC = auto()
|
|
TC_SEND_TIMEOUT_FACTOR = auto()
|
|
|
|
# Config dictionaries
|
|
USE_SERIAL = auto()
|
|
SERIAL_CONFIG = auto()
|
|
USE_ETHERNET = auto()
|
|
ETHERNET_CONFIG = auto()
|
|
|
|
# Object handles
|
|
PRETTY_PRINTER = auto()
|
|
TM_LISTENER_HANDLE = auto()
|
|
COM_INTERFACE_HANDLE = auto()
|
|
TMTC_PRINTER_HANDLE = auto()
|
|
|
|
|
|
def add_globals_pre_args_parsing(gui: bool = False):
|
|
from tmtc_core.core.tmtcc_globals_manager import update_global
|
|
import pprint
|
|
|
|
update_global(GlobalIds.APID, 0x65)
|
|
update_global(GlobalIds.COM_IF, ComInterfaces.EthernetUDP)
|
|
update_global(GlobalIds.TC_SEND_TIMEOUT_FACTOR, 2)
|
|
update_global(GlobalIds.TM_TIMEOUT, 4)
|
|
update_global(GlobalIds.DISPLAY_MODE, "long")
|
|
update_global(GlobalIds.PRINT_TO_FILE, True)
|
|
|
|
update_global(GlobalIds.SERIAL_CONFIG, dict())
|
|
update_global(GlobalIds.ETHERNET_CONFIG, dict())
|
|
pp = pprint.PrettyPrinter()
|
|
update_global(GlobalIds.PRETTY_PRINTER, pp)
|
|
update_global(GlobalIds.TM_LISTENER_HANDLE, None)
|
|
update_global(GlobalIds.COM_INTERFACE_HANDLE, None)
|
|
update_global(GlobalIds.TMTC_PRINTER_HANDLE, None)
|
|
update_global(GlobalIds.PRINT_RAW_TM, False)
|
|
update_global(GlobalIds.RESEND_TC, False)
|
|
|
|
update_global(GlobalIds.OP_CODE, "0")
|
|
update_global(GlobalIds.MODE, ModeList.ListenerMode)
|
|
|
|
if gui:
|
|
set_up_ethernet_cfg()
|
|
|
|
servicelist = dict()
|
|
servicelist[ServiceList.SERVICE_2] = ["Service 2 Raw Commanding"]
|
|
servicelist[ServiceList.SERVICE_3] = ["Service 3 Housekeeping"]
|
|
servicelist[ServiceList.SERVICE_5] = ["Service 5 Event"]
|
|
servicelist[ServiceList.SERVICE_8] = ["Service 8 Functional Commanding"]
|
|
servicelist[ServiceList.SERVICE_9] = ["Service 9 Time"]
|
|
servicelist[ServiceList.SERVICE_17] = ["Service 17 Test"]
|
|
servicelist[ServiceList.SERVICE_20] = ["Service 20 Parameters"]
|
|
servicelist[ServiceList.SERVICE_23] = ["Service 23 File Management"]
|
|
servicelist[ServiceList.SERVICE_200] = ["Service 200 Mode Management"]
|
|
update_global(GlobalIds.SERVICE, ServiceList.SERVICE_17)
|
|
update_global(GlobalIds.SERVICELIST, servicelist)
|
|
|
|
|
|
def add_globals_post_args_parsing(args: argparse.Namespace):
|
|
from tmtc_core.core.tmtcc_globals_manager import update_global
|
|
from config.tmtcc_definitions import ModeList
|
|
logger = get_logger()
|
|
|
|
mode_param = ModeList.ListenerMode
|
|
if 0 <= args.mode <= 6:
|
|
if args.mode == 0:
|
|
mode_param = ModeList.GUIMode
|
|
elif args.mode == 1:
|
|
mode_param = ModeList.ListenerMode
|
|
elif args.mode == 2:
|
|
mode_param = ModeList.SingleCommandMode
|
|
elif args.mode == 3:
|
|
mode_param = ModeList.ServiceTestMode
|
|
elif args.mode == 4:
|
|
mode_param = ModeList.SoftwareTestMode
|
|
update_global(GlobalIds.MODE, mode_param)
|
|
|
|
if args.com_if == ComInterfaces.EthernetUDP.value:
|
|
com_if = ComInterfaces.EthernetUDP
|
|
elif args.com_if == ComInterfaces.Serial.value:
|
|
com_if = ComInterfaces.Serial
|
|
elif args.com_if == ComInterfaces.Dummy.value:
|
|
com_if = ComInterfaces.Dummy
|
|
elif args.com_if == ComInterfaces.QEMU.value:
|
|
com_if = ComInterfaces.QEMU
|
|
else:
|
|
com_if = ComInterfaces.Serial
|
|
update_global(GlobalIds.COM_IF, com_if)
|
|
|
|
if args.short_display_mode:
|
|
display_mode_param = "short"
|
|
else:
|
|
display_mode_param = "long"
|
|
update_global(GlobalIds.DISPLAY_MODE, display_mode_param)
|
|
|
|
service = str(args.service).lower()
|
|
if service == "2":
|
|
service = ServiceList.SERVICE_2
|
|
elif service == "3":
|
|
service = ServiceList.SERVICE_3
|
|
elif service == "5":
|
|
service = ServiceList.SERVICE_5
|
|
elif service == "8":
|
|
service = ServiceList.SERVICE_8
|
|
elif service == "9":
|
|
service = ServiceList.SERVICE_9
|
|
elif service == "17":
|
|
service = ServiceList.SERVICE_17
|
|
elif service == "20":
|
|
service = ServiceList.SERVICE_20
|
|
elif service == "23":
|
|
service = ServiceList.SERVICE_23
|
|
elif service == "p60dock":
|
|
service = ServiceList.P60DOCK
|
|
elif service == "pdu1":
|
|
service = ServiceList.PDU1
|
|
elif service == "pdu2":
|
|
service = ServiceList.PDU2
|
|
elif service == "acu":
|
|
service = ServiceList.ACU
|
|
elif service == "tmp1075_1":
|
|
service = ServiceList.TMP1075_1
|
|
elif service == "tmp1075_2":
|
|
service = ServiceList.TMP1075_2
|
|
elif service == "heater":
|
|
service = ServiceList.HEATER
|
|
elif service == "sa_depl":
|
|
service = ServiceList.SA_DEPL
|
|
elif service == "syrlinks":
|
|
service = ServiceList.SYRLINKS
|
|
else:
|
|
logger.warning("Service not known! Setting standard service 17")
|
|
service = ServiceList.SERVICE_17
|
|
|
|
update_global(GlobalIds.SERVICE, service)
|
|
|
|
if args.op_code is None:
|
|
op_code = 0
|
|
else:
|
|
op_code = str(args.op_code).lower()
|
|
update_global(GlobalIds.OP_CODE, op_code)
|
|
|
|
update_global(GlobalIds.USE_LISTENER_AFTER_OP, args.listener)
|
|
update_global(GlobalIds.TM_TIMEOUT, args.tm_timeout)
|
|
update_global(GlobalIds.PRINT_HK, args.print_hk)
|
|
update_global(GlobalIds.PRINT_TM, args.print_tm)
|
|
update_global(GlobalIds.PRINT_RAW_TM, args.raw_data_print)
|
|
update_global(GlobalIds.PRINT_TO_FILE, args.print_log)
|
|
update_global(GlobalIds.RESEND_TC, args.resend_tc)
|
|
update_global(GlobalIds.TC_SEND_TIMEOUT_FACTOR, 3)
|
|
|
|
use_serial_cfg = False
|
|
if com_if == ComInterfaces.Serial or com_if == ComInterfaces.QEMU:
|
|
use_serial_cfg = True
|
|
if use_serial_cfg:
|
|
set_up_serial_cfg(com_if)
|
|
|
|
use_ethernet_cfg = False
|
|
if com_if == ComInterfaces.EthernetUDP:
|
|
use_ethernet_cfg = True
|
|
if use_ethernet_cfg:
|
|
# TODO: Port and IP address can also be passed as CLI parameters. Use them here if applicable
|
|
set_up_ethernet_cfg()
|
|
|
|
|
|
def set_up_serial_cfg(com_if: ComInterfaces):
|
|
from tmtc_core.core.tmtcc_globals_manager import update_global
|
|
update_global(GlobalIds.USE_SERIAL, True)
|
|
from tmtc_core.core.tmtcc_globals_manager import get_global
|
|
from config.tmtcc_definitions import SerialConfig
|
|
serial_cfg_dict = get_global(GlobalIds.SERIAL_CONFIG)
|
|
if com_if == ComInterfaces.Serial:
|
|
com_port = determine_com_port()
|
|
else:
|
|
com_port = ""
|
|
serial_cfg_dict.update({SerialConfig.SERIAL_PORT: com_port})
|
|
serial_cfg_dict.update({SerialConfig.SERIAL_BAUD_RATE: 115200})
|
|
serial_cfg_dict.update({SerialConfig.SERIAL_TIMEOUT: 0.01})
|
|
serial_cfg_dict.update({SerialConfig.SERIAL_COMM_TYPE: SerialCommunicationType.DLE_ENCODING})
|
|
serial_cfg_dict.update({SerialConfig.SERIAL_FRAME_SIZE: 256})
|
|
serial_cfg_dict.update({SerialConfig.SERIAL_DLE_QUEUE_LEN: 25})
|
|
serial_cfg_dict.update({SerialConfig.SERIAL_DLE_MAX_FRAME_SIZE: 1024})
|
|
update_global(GlobalIds.SERIAL_CONFIG, serial_cfg_dict)
|
|
|
|
|
|
def set_up_ethernet_cfg():
|
|
from tmtc_core.core.tmtcc_globals_manager import update_global
|
|
update_global(GlobalIds.USE_ETHERNET, True)
|
|
from tmtc_core.core.tmtcc_globals_manager import get_global
|
|
from config.tmtcc_definitions import EthernetConfig
|
|
from tmtc_core.com_if.tmtcc_ethernet_utilities import determine_ip_addresses
|
|
ethernet_cfg_dict = get_global(GlobalIds.ETHERNET_CONFIG)
|
|
# This will either load the addresses from a JSON file or prompt them from the user.
|
|
send_addr, rcv_addr = determine_ip_addresses()
|
|
ethernet_cfg_dict.update({EthernetConfig.SEND_ADDRESS: send_addr})
|
|
ethernet_cfg_dict.update({EthernetConfig.RECV_ADDRESS: rcv_addr})
|
|
update_global(GlobalIds.ETHERNET_CONFIG, ethernet_cfg_dict)
|
|
|
|
|
|
|