diff --git a/.run/tmtcgui.run.xml b/.run/tmtcgui.run.xml
index 0471dac..845b1c6 100644
--- a/.run/tmtcgui.run.xml
+++ b/.run/tmtcgui.run.xml
@@ -13,7 +13,7 @@
-
+
diff --git a/pus_tc/system/proc.py b/pus_tc/system/proc.py
index e93e777..f432e3e 100644
--- a/pus_tc/system/proc.py
+++ b/pus_tc/system/proc.py
@@ -286,7 +286,7 @@ def pack_proc_commands(tc_queue: TcQueueT, op_code: str):
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]
diff --git a/pus_tm/hk_handling.py b/pus_tm/hk_handling.py
index 2d7397e..2aefb26 100644
--- a/pus_tm/hk_handling.py
+++ b/pus_tm/hk_handling.py
@@ -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(
diff --git a/pus_tm/system/tcs.py b/pus_tm/system/tcs.py
index 44f5a80..1420c72 100644
--- a/pus_tm/system/tcs.py
+++ b/pus_tm/system/tcs.py
@@ -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)
diff --git a/pus_tm/tcp_server_objects.py b/pus_tm/tcp_server_objects.py
new file mode 100644
index 0000000..72a0d93
--- /dev/null
+++ b/pus_tm/tcp_server_objects.py
@@ -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)
diff --git a/pus_tm/tm_tcp_server.py b/pus_tm/tm_tcp_server.py
index 239ebe6..89e4c88 100644
--- a/pus_tm/tm_tcp_server.py
+++ b/pus_tm/tm_tcp_server.py
@@ -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: