Compare commits

...

4 Commits

Author SHA1 Message Date
Jakob Meier
38b8f2a02f device temperature set parsing 2022-06-01 10:47:57 +02:00
Jakob Meier
210ec8805c Merge branch 'develop' into meier/tvac-tests 2022-06-01 06:25:46 +02:00
37d3c44067 Merge pull request 'changed diagnostic handover' (#97) from kranz/master into develop
Reviewed-on: #97
2022-06-01 06:25:12 +02:00
351bb7c475 changed diagnostic handover 2022-05-31 17:55:53 +02:00
6 changed files with 163 additions and 51 deletions

View File

@@ -13,7 +13,7 @@
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tmtcgui.py" />
<option name="PARAMETERS" value="-l" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />

View File

@@ -144,19 +144,19 @@ def pack_generic_hk_listening_cmds(
tc_queue: TcQueueT,
proc_key: str,
sid_list: list[bytearray],
diag: bool,
diag_list: list[bool],
cfg: GenericHkListeningCfg,
):
info = PROC_INFO_DICT[proc_key]
collection_time = info[2]
generic_print(tc_queue=tc_queue, info=info)
for sid in sid_list:
for i in range(len(sid_list)):
enable_listen_to_hk_for_x_seconds(
diag=diag,
diag=diag_list[i],
tc_queue=tc_queue,
device=proc_key,
sid=sid,
sid=sid_list[i],
interval_seconds=info[3],
)
if not cfg.use_tc_sched:
@@ -179,13 +179,13 @@ def pack_generic_hk_listening_cmds(
if not cfg.use_tc_sched:
tc_queue.appendleft((QueueCommands.WAIT, collection_time))
disable_cmd_list = []
for sid in sid_list:
for i in range(len(sid_list)):
disable_cmd_list.append(
gen_disable_listen_to_hk_for_x_seconds(
diag=diag,
diag=diag_list[i],
tc_queue=tc_queue,
device=proc_key,
sid=sid,
sid=sid_list[i],
)
)
current_time = time.time()
@@ -203,6 +203,7 @@ def pack_generic_hk_listening_cmds(
)
)
sid_list.clear()
diag_list.clear()
def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
@@ -214,22 +215,24 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
if op_code in OpCodes.BAT_FT:
key = KAI.BAT_FT[0]
sid_list.append(make_sid(oids.BPX_HANDLER_ID, BpxSetIds.GET_HK_SET))
diag_list = [False]
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
diag_list=diag_list,
cfg=GenericHkListeningCfg.default(),
)
if op_code in OpCodes.CORE_FT:
key = KAI.CORE_FT[0]
sid_list.append(make_sid(oids.CORE_CONTROLLER_ID, CoreSetIds.HK))
diag_list = [False]
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
diag_list=diag_list,
cfg=GenericHkListeningCfg.default(),
)
@@ -246,6 +249,17 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
(oids.ACU_HANDLER_ID, GsSetIds.ACU_AUX),
]
diag_list = [
False,
True,
True,
True,
False,
False,
False,
False,
]
for pcdu_dev in pcdu_pairs:
oid = pcdu_dev[0]
set_id = pcdu_dev[1]
@@ -254,24 +268,25 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
diag_list=diag_list,
cfg=GenericHkListeningCfg.default(),
)
if op_code in OpCodes.RAD_SEN_FT:
key = KAI.RAD_SEN_FT[0]
sid_list.append(make_sid(oids.RAD_SENSOR_ID, RadSetIds.HK))
diag_list = [False]
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
diag_list=diag_list,
cfg=GenericHkListeningCfg.default(),
)
if op_code in OpCodes.TV_SETUP_TCS_FT_ON:
# Enable scheduling
tc_queue.appendleft(generate_enable_tc_sched_cmd(22).pack_command_tuple())
tc_queue.appendleft(generate_enable_tc_sched_cmd(ssc=22).pack_command_tuple())
# check whether tcs_assembly also has to be commanded to NORMAL Mode
pack_tcs_sys_commands(
tc_queue=tc_queue, op_code=TcsOpCodes.TCS_BOARD_ASS_NORMAL[0]
@@ -303,6 +318,13 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
(oids.GPS_CONTROLLER, GpsSetIds.HK),
]
d_side_pairs = a_side_pairs + b_side_pairs
diag_list = [
False,
False,
False,
False,
False,
]
pack_acs_command(tc_queue=tc_queue, op_code="acs-a")
for a_side_dev in a_side_pairs:
@@ -313,7 +335,7 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
diag_list=diag_list,
cfg=GenericHkListeningCfg.default(),
)
@@ -329,7 +351,7 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
diag_list=diag_list,
cfg=GenericHkListeningCfg.default(),
)
@@ -341,11 +363,12 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
oid = d_side_dev[0]
set_id = d_side_dev[1]
sid_list.append(make_sid(oid, set_id))
diag_list = diag_list + diag_list
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
diag_list=diag_list,
cfg=GenericHkListeningCfg.default(),
)
@@ -358,6 +381,11 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
(oids.IMTQ_HANDLER_ID, ImtqSetIds.CAL_MTM_SET),
(oids.IMTQ_HANDLER_ID, ImtqSetIds.RAW_MTM_SET),
]
diag_list = [
False,
False,
False,
]
# mgt 1: imtq und hk
pack_imtq_test_into(oids.IMTQ_HANDLER_ID, tc_queue=tc_queue, op_code="2")
@@ -367,7 +395,7 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
set_id = imtq_dev[1]
sid_list.append(make_sid(oid, set_id))
pack_generic_hk_listening_cmds(
tc_queue=tc_queue, proc_key=key, sid_list=sid_list, diag=False, cfg=GenericHkListeningCfg.default()
tc_queue=tc_queue, proc_key=key, sid_list=sid_list, diag_list=diag_list, cfg=GenericHkListeningCfg.default()
)
pack_imtq_test_into(oids.IMTQ_HANDLER_ID, tc_queue=tc_queue, op_code="0")
@@ -394,7 +422,21 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
(oids.IMTQ_HANDLER_ID, ImtqSetIds.RAW_MTM_SET),
]
d_side_and_imtq_pairs = a_side_pairs + b_side_pairs + imtq_pairs
diag_list = [
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
]
pack_acs_command(tc_queue=tc_queue, op_code="acs-d")
# mgt 2.: imtq + dual side + dipole
pack_imtq_test_into(
@@ -412,7 +454,7 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
diag_list=diag_list,
cfg=cfg,
)
@@ -440,6 +482,15 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
oids.SUS_10_R_LOC_XMYBZF_PT_ZF,
oids.SUS_11_R_LOC_XBYMZB_PT_ZB,
]
diag_list = [
False,
False,
False,
False,
False,
False,
]
# SUSs
for nom_sus in sus_n_ids:
sid_list.append(make_sid(nom_sus, SetIds.HK))
@@ -447,7 +498,7 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
diag_list=diag_list,
cfg=GenericHkListeningCfg.default(),
)
@@ -462,7 +513,7 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
diag_list=diag_list,
cfg=GenericHkListeningCfg.default(),
)
@@ -475,11 +526,12 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
sid_list.append(make_sid(nom_sus, SetIds.HK))
for red_sus in sus_r_ids:
sid_list.append(make_sid(red_sus, SetIds.HK))
diag_list = diag_list + diag_list
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
diag_list=diag_list,
cfg=GenericHkListeningCfg.default(),
)
@@ -494,11 +546,12 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
# STR
sid_list.append(make_sid(oids.STAR_TRACKER_ID, StrSetIds.TEMPERATURE))
diag_list = [False]
pack_generic_hk_listening_cmds(
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
diag_list=diag_list,
cfg=GenericHkListeningCfg.default(),
)
@@ -526,7 +579,24 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
(oids.RW4_ID, RwSetIds.LAST_RESET),
(oids.RW4_ID, RwSetIds.TM_SET),
]
diag_list = [
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
]
# RW NORMAL
pack_rw_ass_cmds(object_id=oids.RW_ASSEMBLY, tc_queue=tc_queue, op_code="nml")
@@ -539,7 +609,7 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
diag_list=diag_list,
cfg=GenericHkListeningCfg(mgt=False, one_rw=True, two_rws=False),
)
# RW OFF
@@ -566,6 +636,24 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
(oids.RW4_ID, RwSetIds.LAST_RESET),
(oids.RW4_ID, RwSetIds.TM_SET),
]
diag_list = [
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
False,
]
# RW NORMAL
pack_rw_ass_cmds(object_id=oids.RW_ASSEMBLY, tc_queue=tc_queue, op_code="nml")
@@ -578,7 +666,7 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
tc_queue=tc_queue,
proc_key=key,
sid_list=sid_list,
diag=False,
diag_list=diag_list,
cfg=GenericHkListeningCfg(mgt=False, one_rw=False, two_rws=True),
)
# RW OFF

View File

@@ -1,11 +1,9 @@
"""HK Handling for EIVE OBSW"""
import struct
from pus_tm.devs.plpcdu import handle_plpcdu_hk
from pus_tm.devs.rad_sensor import handle_rad_sensor_data
from pus_tm.devs.sus import handle_sus_hk
from pus_tm.system.tcs import handle_thermal_controller_hk_data, TM_TCP_SERVER
from tmtccmd.config.definitions import HkReplyUnpacked
from pus_tm.system.tcs import handle_thermal_controller_hk_data
from tmtccmd.tm.pus_3_fsfw_hk import (
Service3Base,
HkContentType,
@@ -27,9 +25,10 @@ from pus_tm.devs.pcdu import handle_pdu_data, handle_p60_hk_data, handle_acu_hk_
from pus_tm.devs.syrlinks import handle_syrlinks_hk_data
from pus_tc.devs.imtq import ImtqSetIds
from pus_tm.devs.reaction_wheels import handle_rw_hk_data
from pus_tm.defs import FsfwTmTcPrinter, log_to_both
from pus_tm.defs import FsfwTmTcPrinter
from pus_tm.system.core import handle_core_hk_data
from pus_tm.devs.mgms import handle_mgm_hk_data
from pus_tm.tcp_server_objects import tcp_server_sensor_temperatures
import config.object_ids as obj_ids
@@ -47,7 +46,7 @@ def handle_hk_packet(
named_obj_id = tm_packet.object_id
if tm_packet.subservice == 25 or tm_packet.subservice == 26:
hk_data = tm_packet.tm_data[8:]
TM_TCP_SERVER.report_raw_hk_data(
tcp_server_sensor_temperatures.report_raw_hk_data(
object_id=named_obj_id, set_id=tm_packet.set_id, hk_data=hk_data
)
printer.generic_hk_tm_print(

View File

@@ -1,23 +1,20 @@
import struct
from pus_tm.defs import PrintWrapper
from pus_tm.tm_tcp_server import TmTcpServer
from pus_tm.tcp_server_objects import *
from tmtccmd.utility import ObjectId
from tmtccmd.utility.tmtc_printer import FsfwTmTcPrinter
TM_TCP_SERVER = TmTcpServer.get_instance()
def handle_thermal_controller_hk_data(
object_id: ObjectId, printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes
):
if set_id == 0:
pw = PrintWrapper(printer)
pw.dlog("Received Sensor Temperature data")
pw.dlog("Received sensor temperature data")
# get all the floats
tm_data = struct.unpack("!ffffffffffffffffff", hk_data[: 18 * 4])
tm_data = struct.unpack("!ffffffffffffffffff", hk_data[:18 * 4])
parsed_data = {"SENSOR_PLOC_HEATSPREADER": tm_data[0], "SENSOR_PLOC_MISSIONBOARD": tm_data[1],
"SENSOR_4K_CAMERA": tm_data[2], "SENSOR_DAC_HEATSPREADER": tm_data[3],
"SENSOR_STARTRACKER": tm_data[4], "SENSOR_RW1": tm_data[5], "SENSOR_DRO": tm_data[6],
@@ -27,5 +24,40 @@ def handle_thermal_controller_hk_data(
"SENSOR_MAGNETTORQUER": tm_data[15], "TMP1075 1": tm_data[16], "TMP1075 2": tm_data[17]}
print(parsed_data)
tcp_server_sensor_temperatures.report_parsed_hk_data(object_id, set_id, parsed_data)
elif set_id == 1:
pw = PrintWrapper(printer)
pw.dlog("Received device temperature data")
TM_TCP_SERVER.report_parsed_hk_data(object_id, set_id, parsed_data)
fmt_str = "!fffffiiiiffffhhhhhhhfffffff"
tm_data = struct.unpack(fmt_str, hk_data[:90])
parsed_data = {
"Q7S_TEMPERATURE": tm_data[0],
"BATTERY_TEMPERATURE_1": tm_data[1],
"BATTERY_TEMPERATURE_2": tm_data[2],
"BATTERY_TEMPERATURE_3": tm_data[3],
"BATTERY_TEMPERATURE_4": tm_data[4],
"RW_1_TEMPERATURE": tm_data[5],
"RW_2_TEMPERATURE": tm_data[6],
"RW_3_TEMPERATURE": tm_data[7],
"RW_4_TEMPERATURE": tm_data[8],
"STARTRACKER_TEMPERATURE": tm_data[9],
"SYRLINKS_POWER_AMPLIFIER_TEMPERATURE": tm_data[10],
"SYRLINKS_BASEBAND_BOARD_TEMPERATURE": tm_data[11],
"MGT_TEMPERATURE": tm_data[12],
"ACU_TEMPERATURE_1": tm_data[13],
"ACU_TEMPERATURE_2": tm_data[14],
"ACU_TEMPERATURE_3": tm_data[15],
"PDU1_TEMPERATURE": tm_data[16],
"PDU2_TEMPERATURE": tm_data[17],
"P60DOCK_TEMPERATURE_1": tm_data[18],
"P60DOCK_TEMPERATURE_2": tm_data[19],
"GYRO_0_TEMPERATURE": tm_data[20],
"GYRO_1_TEMPERATURE": tm_data[21],
"GYRO_2_TEMPERATURE": tm_data[22],
"GYRO_3_TEMPERATURE": tm_data[23],
"MGM_0_TEMPERATURE": tm_data[24],
"MGM_1_TEMPERATURE": tm_data[25],
"ADC_PL_PCDU_TEMPERATURE": tm_data[26],
}
tcp_server_device_temperatures.report_parsed_hk_data(object_id, set_id, parsed_data)

View File

@@ -0,0 +1,4 @@
from pus_tm.tm_tcp_server import TmTcpServer
tcp_server_sensor_temperatures = TmTcpServer("localhost", 7305)
tcp_server_device_temperatures = TmTcpServer("localhost", 7306)

View File

@@ -7,21 +7,16 @@ from tmtccmd.logging import get_console_logger
from tmtccmd.utility.obj_id import ObjectId
from dle_encoder import DleEncoder
# TODO add to configuration parameters
SERVER_HOST = "localhost"
SERVER_PORT = 7305
LOGGER = get_console_logger()
class TmTcpServer:
_Instance = None
def __init__(self):
def __init__(self, ip_address: str, port: int):
self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server_socket.bind((SERVER_HOST, SERVER_PORT))
self.server_socket.bind((ip_address, port))
# for now, only accept one connection
self.server_socket.listen(0)
@@ -43,12 +38,6 @@ class TmTcpServer:
if self.client_connection is not None:
self.client_connection.close()
@staticmethod
def get_instance():
if TmTcpServer._Instance is None:
TmTcpServer._Instance = TmTcpServer()
return TmTcpServer._Instance
def _send_dictionary_over_socket(self, dictionary):
# keep listeners current
if self.client_connection is None: