tmp1075 tests

This commit is contained in:
Jakob Meier 2021-01-10 11:42:06 +01:00
parent eb9deae5ab
commit 6b840eff43
8 changed files with 128 additions and 3 deletions

View File

@ -32,6 +32,7 @@ class ServiceList(enum.Enum):
PDU1 = auto() PDU1 = auto()
PDU2 = auto() PDU2 = auto()
ACU = auto() ACU = auto()
TMP1075 = auto()
class SerialConfig(enum.Enum): class SerialConfig(enum.Enum):

View File

@ -154,6 +154,8 @@ def add_globals_post_args_parsing(args: argparse.Namespace):
service = ServiceList.PDU2 service = ServiceList.PDU2
elif service == "acu": elif service == "acu":
service = ServiceList.ACU service = ServiceList.ACU
elif service == "tmp1075":
service = ServiceList.TMP1075
else: else:
logger.warning("Service not known! Setting standard service 17") logger.warning("Service not known! Setting standard service 17")
service = ServiceList.SERVICE_17 service = ServiceList.SERVICE_17

View File

@ -16,6 +16,8 @@ class ObjectIds(enum.Enum):
PDU1_HANDLER_ID = auto() PDU1_HANDLER_ID = auto()
PDU2_HANDLER_ID = auto() PDU2_HANDLER_ID = auto()
ACU_HANDLER_ID = auto() ACU_HANDLER_ID = auto()
TMP1075_1_HANDLER_ID = auto()
TMP1075_2_HANDLER_ID = auto()
def set_object_ids(object_id_dict: Dict[ObjectIds, bytearray]): def set_object_ids(object_id_dict: Dict[ObjectIds, bytearray]):
@ -27,5 +29,7 @@ def set_object_ids(object_id_dict: Dict[ObjectIds, bytearray]):
o_ids.PDU1_HANDLER_ID: bytearray([0x44, 0x00, 0x00, 0x2]), o_ids.PDU1_HANDLER_ID: bytearray([0x44, 0x00, 0x00, 0x2]),
o_ids.PDU2_HANDLER_ID: bytearray([0x44, 0x00, 0x00, 0x3]), o_ids.PDU2_HANDLER_ID: bytearray([0x44, 0x00, 0x00, 0x3]),
o_ids.ACU_HANDLER_ID: bytearray([0x44, 0x00, 0x00, 0x4]), o_ids.ACU_HANDLER_ID: bytearray([0x44, 0x00, 0x00, 0x4]),
o_ids.TMP1075_1_HANDLER_ID: bytearray([0x44, 0x00, 0x00, 0x5]),
o_ids.TMP1075_2_HANDLER_ID: bytearray([0x44, 0x00, 0x00, 0x6]),
} }
) )

View File

@ -10,6 +10,8 @@ from tmtc_core.pus_tc.tmtcc_pus_tc_packer import TcQueueT
from tmtc_core.pus_tc.tmtcc_pus_tc_base import PusTelecommand from tmtc_core.pus_tc.tmtcc_pus_tc_base import PusTelecommand
from gomspace.gomspace_common import * from gomspace.gomspace_common import *
from pus_tc.tmtcc_tc_p60dock import P60DockConfigTable from pus_tc.tmtcc_tc_p60dock import P60DockConfigTable
from config.tmtcc_object_ids import ObjectIds
from tmtc_core.core.tmtcc_object_id_manager import get_object_id
class ACUTestProcedure: class ACUTestProcedure:
@ -54,7 +56,8 @@ def pack_acu_test_into(object_id: bytearray, tc_queue: TcQueueT) -> TcQueueT:
tc_queue.appendleft(("print", "Testing ACU")) tc_queue.appendleft(("print", "Testing ACU"))
tc_queue.appendleft(("print", "P60 Dock: Enabling ACU connected to X1 slot (channel 0)")) tc_queue.appendleft(("print", "P60 Dock: Enabling ACU connected to X1 slot (channel 0)"))
command = pack_set_param_command(g.P60DOCK_HANDLER_ID, P60DockConfigTable.out_en_0.parameter_address, p60dock_object_id = get_object_id(ObjectIds.P60DOCK_HANDLER_ID)
command = pack_set_param_command(p60dock_object_id, P60DockConfigTable.out_en_0.parameter_address,
P60DockConfigTable.out_en_0.parameter_size, Channel.on) P60DockConfigTable.out_en_0.parameter_size, Channel.on)
command = PusTelecommand(service=8, subservice=128, ssc=23, app_data=command) command = PusTelecommand(service=8, subservice=128, ssc=23, app_data=command)
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
@ -113,7 +116,7 @@ def pack_acu_test_into(object_id: bytearray, tc_queue: TcQueueT) -> TcQueueT:
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
tc_queue.appendleft(("print", "P60 Dock: Turning off ACU")) tc_queue.appendleft(("print", "P60 Dock: Turning off ACU"))
command = pack_set_param_command(g.P60DOCK_HANDLER_ID, P60DockConfigTable.out_en_0.parameter_address, command = pack_set_param_command(p60dock_object_id, P60DockConfigTable.out_en_0.parameter_address,
P60DockConfigTable.out_en_0.parameter_size, Channel.off) P60DockConfigTable.out_en_0.parameter_size, Channel.off)
command = PusTelecommand(service=8, subservice=128, ssc=23, app_data=command) command = PusTelecommand(service=8, subservice=128, ssc=23, app_data=command)
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())

View File

@ -19,6 +19,7 @@ from pus_tc.tmtcc_tc_pdu1 import pack_pdu1_test_into
from pus_tc.tmtcc_tc_acu import pack_acu_test_into from pus_tc.tmtcc_tc_acu import pack_acu_test_into
from tmtc_core.core.tmtcc_object_id_manager import get_object_id from tmtc_core.core.tmtcc_object_id_manager import get_object_id
from config.tmtcc_object_ids import ObjectIds from config.tmtcc_object_ids import ObjectIds
from pus_tc.tmtcc_tc_tmp1075 import pack_tmp1075_test_into
LOGGER = get_logger() LOGGER = get_logger()
@ -40,6 +41,9 @@ def pack_service_queue_user(service: Union[int, str], op_code: int, service_queu
if service == ServiceList.ACU: if service == ServiceList.ACU:
object_id = get_object_id(ObjectIds.ACU_HANDLER_ID) object_id = get_object_id(ObjectIds.ACU_HANDLER_ID)
return pack_acu_test_into(object_id, service_queue) return pack_acu_test_into(object_id, service_queue)
if service == ServiceList.TMP1075:
object_id = get_object_id(ObjectIds.TMP1075_1_HANDLER_ID)
return pack_tmp1075_test_into(object_id, service_queue)
LOGGER.warning("Invalid Service !") LOGGER.warning("Invalid Service !")

View File

@ -0,0 +1,52 @@
# -*- coding: utf-8 -*-
"""
@file tmtcc_tc_service200_mode.py
@brief PUS Service 200: PUS custom service 200: Mode commanding
@author R. Mueller
@date 02.05.2020
"""
from tmtc_core.pus_tc.tmtcc_pus_tc_base import PusTelecommand
from tmtc_core.pus_tc.tmtcc_pus_tc_packer import TcQueueT
from tmtc_core.core.tmtcc_object_id_manager import get_object_id
from config.tmtcc_object_ids import ObjectIds
import struct
TEST_DEVICE_ID = get_object_id(ObjectIds.TEST_DEVICE)
def pack_service200_test_into(tc_queue: TcQueueT) -> TcQueueT:
tc_queue.appendleft(("print", "Testing Service 200"))
# Object ID: Dummy Device
object_id = TEST_DEVICE_ID
# Set On Mode
tc_queue.appendleft(("print", "Testing Service 200: Set Mode On"))
mode_data = pack_mode_data(object_id, 1, 0)
command = PusTelecommand(service=200, subservice=1, ssc=2000, app_data=mode_data)
tc_queue.appendleft(command.pack_command_tuple())
# Set Normal mode
tc_queue.appendleft(("print", "Testing Service 200: Set Mode Normal"))
mode_data = pack_mode_data(object_id, 2, 0)
command = PusTelecommand(service=200, subservice=1, ssc=2010, app_data=mode_data)
tc_queue.appendleft(command.pack_command_tuple())
# Set Raw Mode
tc_queue.appendleft(("print", "Testing Service 200: Set Mode Raw"))
mode_data = pack_mode_data(object_id, 3, 0)
command = PusTelecommand(service=200, subservice=1, ssc=2020, app_data=mode_data)
tc_queue.appendleft(command.pack_command_tuple())
# Set Off Mode
tc_queue.appendleft(("print", "Testing Service 200: Set Mode Off"))
mode_data = pack_mode_data(object_id, 0, 0)
command = PusTelecommand(service=200, subservice=1, ssc=2030, app_data=mode_data)
tc_queue.appendleft(command.pack_command_tuple())
tc_queue.appendleft(("export", "log/tmtc_log_service200.txt"))
return tc_queue
# Mode 0: Off, Mode 1: Mode On, Mode 2: Mode Normal, Mode 3: Mode Raw
def pack_mode_data(object_id: bytearray, mode_: int, submode_: int) -> bytearray:
# Normal mode
mode = struct.pack(">I", mode_)
# Submode default
submode = struct.pack('B', submode_)
mode_data = object_id + mode + submode
return mode_data

View File

@ -0,0 +1,59 @@
# -*- coding: utf-8 -*-
"""
@file tmtcc_tc_tmp1075.py
@brief TMP1075 tests
@author J. Meier
@date 06.01.2021
"""
from tmtc_core.pus_tc.tmtcc_pus_tc_packer import TcQueueT
from tmtc_core.pus_tc.tmtcc_pus_tc_base import PusTelecommand
from pus_tc.tmtcc_tc_service200_mode import pack_mode_data
class Tmp1075TestProcedure:
"""
@brief Use this class to define the tests to perform for the Tmp1075.
@details Setting all to True will run all tests.
Setting all to False will only run the tests set to True.
"""
all = True
start_adc_conversion = False
get_temp = False
set_mode_normal = False # Setting mode to normal starts continuous temperature reading
set_mode_on = False # If mode is MODE_ON, temperature will only be read on command
class Tmp1075ActionIds:
get_temp = bytearray([0x0, 0x0, 0x0, 0x01])
start_adc_conversion = bytearray([0x0, 0x0, 0x0, 0x02])
def pack_tmp1075_test_into(object_id: bytearray, tc_queue: TcQueueT) -> TcQueueT:
tc_queue.appendleft(("print", "Testing Tmp1075 Temperature Sensor Handler"))
if Tmp1075TestProcedure.all or Tmp1075TestProcedure.start_adc_conversion:
tc_queue.appendleft(("print", "TMP1075: Starting new temperature conversion"))
command = object_id + Tmp1075ActionIds.start_adc_conversion
command = PusTelecommand(service=8, subservice=128, ssc=23, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if Tmp1075TestProcedure.all or Tmp1075TestProcedure.get_temp:
tc_queue.appendleft(("print", "TMP1075: Read temperature"))
command = object_id + Tmp1075ActionIds.get_temp
command = PusTelecommand(service=8, subservice=128, ssc=24, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if Tmp1075TestProcedure.set_mode_normal:
tc_queue.appendleft(("print", "TMP1075:: Set Mode Normal"))
mode_data = pack_mode_data(object_id, 2, 0)
command = PusTelecommand(service=200, subservice=1, ssc=220, app_data=mode_data)
tc_queue.appendleft(command.pack_command_tuple())
if Tmp1075TestProcedure.set_mode_on:
tc_queue.appendleft(("print", "TMP1075: Set Mode On"))
mode_data = pack_mode_data(object_id, 1, 0)
command = PusTelecommand(service=200, subservice=1, ssc=221, app_data=mode_data)
tc_queue.appendleft(command.pack_command_tuple())
return tc_queue

@ -1 +1 @@
Subproject commit ed4b25ab449cae31ac720f52ad43d13b9d7ce4c5 Subproject commit bdb8d5533a40c8396dedafc1844fe3645bcf8de3