start acu hk handling

This commit is contained in:
Robin Müller 2022-05-23 11:24:55 +02:00
parent ff66dd5dd2
commit ea1e440407
No known key found for this signature in database
GPG Key ID: 11D4952C8CCEF814
9 changed files with 529 additions and 450 deletions

View File

@ -10,6 +10,7 @@ import enum
from tmtccmd.tc.pus_8_funccmd import generate_action_command from tmtccmd.tc.pus_8_funccmd import generate_action_command
from tmtccmd.tc.definitions import PusTelecommand from tmtccmd.tc.definitions import PusTelecommand
from tmtccmd.utility import ObjectId
class GomspaceDeviceActionIds(enum.IntEnum): class GomspaceDeviceActionIds(enum.IntEnum):
@ -43,7 +44,8 @@ class SetIds:
PDU_2_AUX = 4 PDU_2_AUX = 4
P60_CORE = 5 P60_CORE = 5
P60_AUX = 6 P60_AUX = 6
ACU = 7 ACU_CORE = 7
ACU_AUX = 8
class TableIds: class TableIds:
@ -67,7 +69,7 @@ class Channel:
def pack_get_param_command( def pack_get_param_command(
object_id: bytearray, table_id: int, memory_address: bytearray, parameter_size: int object_id: bytes, table_id: int, memory_address: bytearray, parameter_size: int
) -> PusTelecommand: ) -> PusTelecommand:
"""Function to generate a command to retrieve parameters like the temperature from a gomspace device. """Function to generate a command to retrieve parameters like the temperature from a gomspace device.
@param object_id: The object id of the gomspace device handler. @param object_id: The object id of the gomspace device handler.
@ -88,7 +90,7 @@ def pack_get_param_command(
def pack_set_param_command( def pack_set_param_command(
object_id: bytearray, object_id: bytes,
memory_address: bytearray, memory_address: bytearray,
parameter_size: int, parameter_size: int,
parameter: int, parameter: int,
@ -128,7 +130,7 @@ def pack_set_param_command(
) )
def pack_ping_command(object_id: bytearray, data: bytearray) -> PusTelecommand: def pack_ping_command(object_id: ObjectId, data: bytearray) -> PusTelecommand:
""" " Function to generate the command to ping a gomspace device """ " Function to generate the command to ping a gomspace device
@param object_id Object Id of the gomspace device handler. @param object_id Object Id of the gomspace device handler.
@param data Bytearray containing the bytes to send to the gomspace device. For now the on board software @param data Bytearray containing the bytes to send to the gomspace device. For now the on board software
@ -137,33 +139,33 @@ def pack_ping_command(object_id: bytearray, data: bytearray) -> PusTelecommand:
data are simply copied by the device and then sent back. data are simply copied by the device and then sent back.
""" """
return generate_action_command( return generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.PING, app_data=data object_id=object_id.as_bytes, action_id=GomspaceDeviceActionIds.PING, app_data=data
) )
def pack_gnd_wdt_reset_command(object_id: bytearray) -> PusTelecommand: def pack_gnd_wdt_reset_command(object_id: ObjectId) -> PusTelecommand:
""" " Function to generate the command to reset the watchdog of a gomspace device. """ " Function to generate the command to reset the watchdog of a gomspace device.
@param object_id Object Id of the gomspace device handler. @param object_id Object Id of the gomspace device handler.
""" """
return generate_action_command( return generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.WDT_RESET object_id=object_id.as_bytes, action_id=GomspaceDeviceActionIds.WDT_RESET
) )
def pack_reboot_command(object_id: bytearray) -> PusTelecommand: def pack_reboot_command(object_id: ObjectId) -> PusTelecommand:
"""Function to generate the command which triggers a reboot of a gomspace device """Function to generate the command which triggers a reboot of a gomspace device
@param object_id The object id of the gomspace device handler. @param object_id The object id of the gomspace device handler.
""" """
return generate_action_command( return generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.REBOOT object_id=object_id.as_bytes, action_id=GomspaceDeviceActionIds.REBOOT
) )
def pack_request_full_hk_table_command(object_id: bytearray) -> PusTelecommand: def pack_request_full_hk_table_command(object_id: ObjectId) -> PusTelecommand:
"""Function to generate the command to request the full housekeeping table from a gomspace """Function to generate the command to request the full housekeeping table from a gomspace
device. device.
@param object_id The object id of the gomspace device handler. @param object_id The object id of the gomspace device handler.
""" """
return generate_action_command( return generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.REQUEST_HK_TABLE object_id=object_id.as_bytes, action_id=GomspaceDeviceActionIds.REQUEST_HK_TABLE
) )

View File

@ -476,289 +476,6 @@ def add_time_cmds(cmd_dict: ServiceOpCodeDictT):
) )
def add_pcdu_cmds(cmd_dict: ServiceOpCodeDictT):
from pus_tc.devs.p60dock import P60OpCodes, GomspaceOpCodes, Info
from pus_tc.devs.pdu1 import Pdu1OpCodes
from pus_tc.devs.pdu2 import Pdu2OpCodes
from gomspace.gomspace_common import Info as GsInfo
op_code_dict = dict()
add_op_code_entry(
op_code_dict=op_code_dict,
keys=P60OpCodes.STACK_3V3_ON,
info=Info.STACK_3V3_ON,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=P60OpCodes.STACK_3V3_OFF,
info=Info.STACK_3V3_OFF,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=P60OpCodes.STACK_5V_ON,
info=Info.STACK_5V_ON,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=P60OpCodes.STACK_5V_OFF,
info=Info.STACK_5V_OFF,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE,
info=GsInfo.REQUEST_CORE_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
info=GsInfo.REQUEST_AUX_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_SWITCH_V_I,
info="P60 Dock: Print Switches, Voltages, Currents",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_LATCHUPS,
info="P60 Dock: Print Latchups",
)
add_op_code_entry(op_code_dict=op_code_dict, keys=P60OpCodes.TEST, info="P60 Tests")
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name=CustomServiceList.P60DOCK.value,
info="P60 Device",
op_code_entry=op_code_dict,
)
op_code_dict = dict()
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.TCS_BOARD_ON.value,
info="PDU1: Turn TCS board on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.TCS_BOARD_OFF.value,
info="PDU1: Turn TCS board off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.STAR_TRACKER_ON.value,
info="PDU1: Turn star tracker on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.STAR_TRACKER_OFF.value,
info="PDU1: Turn star tracker off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SUS_NOMINAL_ON.value,
info="PDU1: Turn SUS nominal on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SUS_NOMINAL_OFF.value,
info="PDU1: Turn SUS nominal off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.ACS_A_SIDE_ON.value,
info="PDU1: Turn ACS A side on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.ACS_A_SIDE_OFF.value,
info="PDU1: Turn ACS A side off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SYRLINKS_ON.value,
info="PDU1: Turn Syrlinks on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SYRLINKS_OFF.value,
info="PDU1: Turn Syrlinks off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.MGT_ON.value,
info="PDU1: Turn MGT on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.MGT_OFF.value,
info="PDU1: Turn MGT off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.PLOC_ON.value,
info="PDU1: Turn PLOC on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.PLOC_OFF.value,
info="PDU1: Turn PLOC off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SCEX_ON.value,
info="PDU1: Turn Solar Cell Experiment on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SCEX_OFF.value,
info="PDU1: Turn Solar Cell Experiment off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE,
info=GsInfo.REQUEST_CORE_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
info=GsInfo.REQUEST_AUX_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_SWITCH_V_I,
info="PDU1: Print Switches, Voltages, Currents",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_LATCHUPS,
info="PDU1: Print Latchups",
)
add_op_code_entry(
op_code_dict=op_code_dict, keys=Pdu1OpCodes.TESTS.value, info="PDU1 Tests"
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name=CustomServiceList.PDU1.value,
info="PDU1 Device",
op_code_entry=op_code_dict,
)
op_code_dict = dict()
add_op_code_entry(op_code_dict=op_code_dict, keys="0", info="PDU2 Tests")
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.ACS_SIDE_B_ON.value,
info="PDU2: Turn ACS Side B on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.ACS_SIDE_B_OFF.value,
info="PDU2: Turn ACS Side B off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SUS_REDUNDANT_ON.value,
info="PDU2: Turn SUS redundant on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SUS_REDUNDANT_OFF.value,
info="PDU2: Turn SUS redundant off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.RW_ON.value,
info="PDU2: Turn reaction wheels on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.RW_OFF.value,
info="PDU2: Turn reaction wheels off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_PCDU_VBAT_NOM_ON.value,
info="PDU2: PL PCDU Switch Channel Nominal (1) on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_PCDU_VBAT_NOM_OFF.value,
info="PDU2: PL PCDU Switch Channel Nominal (1) off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_PCDU_VBAT_RED_ON.value,
info="PDU2: PL PCDU Switch Channel Redundant (1) on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_PCDU_VBAT_RED_OFF.value,
info="PDU2: PL PCDU Switch Channel Redundant (1) off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.TCS_HEATER_IN_ON.value,
info="PDU2: Switch TCS Heater Input on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.TCS_HEATER_IN_OFF.value,
info="PDU2: Switch TCS Heater Input off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SOLAR_ARRAY_DEPL_ON.value,
info="PDU2: Switch Solar Array Deployment On",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SOLAR_ARRAY_DEPL_OFF.value,
info="PDU2: Switch Solar Array Deployment Off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_CAMERA_ON.value,
info="PDU2: Turn payload camera on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_CAMERA_OFF.value,
info="PDU2: Turn payload camera off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE,
info=GsInfo.REQUEST_CORE_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
info=GsInfo.REQUEST_AUX_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_SWITCH_V_I,
info="PDU2: Print Switches, Voltages, Currents",
options={OpCodeDictKeys.TIMEOUT: 2.0},
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_LATCHUPS,
info="PDU2: Print Latchups",
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name="pdu2",
info="PDU2 Device",
op_code_entry=op_code_dict,
)
op_code_dict = {
"0": ("ACU: Tests", {OpCodeDictKeys.TIMEOUT: 2.0}),
"51": ("ACU: Print channel statistics", {OpCodeDictKeys.TIMEOUT: 2.0}),
}
service_tuple = ("ACU Devices", op_code_dict)
cmd_dict[CustomServiceList.ACU.value] = service_tuple
def add_imtq_cmds(cmd_dict: ServiceOpCodeDictT): def add_imtq_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict_srv_imtq = { op_code_dict_srv_imtq = {
"0": ("IMTQ Tests All", {OpCodeDictKeys.TIMEOUT: 2.0}), "0": ("IMTQ Tests All", {OpCodeDictKeys.TIMEOUT: 2.0}),

View File

@ -1,15 +1,101 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
""" """ACU commands
@file tmtcc_tc_acu.py @author J. Meier, R. Mueller
@brief ACU tests
@author J. Meier
@date 21.12.2020 @date 21.12.2020
""" """
import struct from config.definitions import CustomServiceList
from tmtccmd.config import add_op_code_entry, add_service_op_code_entry
from tmtccmd.tc.packer import TcQueueT from tmtccmd.tc.packer import TcQueueT
from tmtccmd.config.definitions import QueueCommands from tmtccmd.config.definitions import QueueCommands, ServiceOpCodeDictT
from gomspace.gomspace_common import * from tmtccmd.tc.pus_3_fsfw_hk import make_sid, generate_one_diag_command, generate_one_hk_command
import gomspace.gomspace_common as gs
from gomspace.gomspace_common import GomspaceOpCodes
from gomspace.gomspace_common import Info as GsInfo
from config.object_ids import ACU_HANDLER_ID
from pus_tc.devs.p60dock import P60DockConfigTable from pus_tc.devs.p60dock import P60DockConfigTable
from tmtccmd.tc.pus_8_funccmd import generate_action_command
from tmtccmd.utility import ObjectId
class ACUConfigTable:
mppt_mode = gs.TableEntry(bytearray([0x00, 0x00]), gs.TableEntry.uint8_size)
mppt_d_mode = gs.TableEntry(bytearray([0x00, 0x01]), gs.TableEntry.uint8_size)
vboost = gs.TableEntry(bytearray([0x00, 0x02]), gs.TableEntry.uint16_size)
vbat_max_hi = gs.TableEntry(bytearray([0x00, 0x10]), gs.TableEntry.uint16_size)
vbat_max_lo = gs.TableEntry(bytearray([0x00, 0x12]), gs.TableEntry.uint16_size)
ov_mode = gs.TableEntry(bytearray([0x00, 0x1A]), gs.TableEntry.uint8_size)
class ACUHkTable:
temperature1 = gs.TableEntry(bytearray([0x00, 0x1C]), gs.TableEntry.uint16_size)
temperature2 = gs.TableEntry(bytearray([0x00, 0x1D]), gs.TableEntry.uint16_size)
temperature3 = gs.TableEntry(bytearray([0x00, 0x1E]), gs.TableEntry.uint16_size)
# Ground WDT value (remaining seconds until reboot)
wdt_gnd_left = gs.TableEntry(bytearray([0x00, 0x74]), gs.TableEntry.uint32_size)
class OpCodes:
TEST = ["0", "test"]
class Info:
TEST = "ACU Test"
def add_acu_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict = dict()
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE,
info=GsInfo.REQUEST_CORE_HK_ONCE
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
info=GsInfo.REQUEST_AUX_HK_ONCE
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
info=GsInfo.REQUEST_AUX_HK_ONCE
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=OpCodes.TEST,
info=Info.TEST
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
op_code_entry=op_code_dict,
name=CustomServiceList.ACU.value,
info="ACU Device"
)
def pack_acu_commands(
object_id: ObjectId, tc_queue: TcQueueT, op_code: str
) -> TcQueueT:
tc_queue.appendleft((QueueCommands.PRINT, "Handling ACU command"))
if op_code in GomspaceOpCodes.PRINT_SWITCH_V_I:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Print channel stats"))
command = generate_action_command(
object_id=object_id.as_bytes,
action_id=gs.GomspaceDeviceActionIds.PRINT_SWITCH_V_I
)
tc_queue.appendleft(command.pack_command_tuple())
if op_code in GomspaceOpCodes.REQUEST_CORE_HK_ONCE:
tc_queue.appendleft((QueueCommands.PRINT, f"PDU1: {GsInfo.REQUEST_CORE_HK_ONCE}"))
hk_sid = make_sid(object_id=object_id.as_bytes, set_id=gs.SetIds.ACU_CORE)
command = generate_one_diag_command(sid=hk_sid, ssc=0)
tc_queue.appendleft(command.pack_command_tuple())
if op_code in GomspaceOpCodes.REQUEST_AUX_HK_ONCE:
tc_queue.appendleft((QueueCommands.PRINT, f"PDU1: {GsInfo.REQUEST_AUX_HK_ONCE}"))
hk_sid = make_sid(object_id=object_id.as_bytes, set_id=gs.SetIds.ACU_AUX)
command = generate_one_hk_command(sid=hk_sid, ssc=0)
tc_queue.appendleft(command.pack_command_tuple())
pack_test_cmds(object_id=object_id, tc_queue=tc_queue)
return tc_queue
class ACUTestProcedure: class ACUTestProcedure:
@ -26,59 +112,28 @@ class ACUTestProcedure:
ping = False ping = False
read_temperature1 = False read_temperature1 = False
read_temperature2 = False read_temperature2 = False
read_temperature3 = True read_temperature3 = False
read_mppt_mode = True read_mppt_mode = False
read_vboost = True read_vboost = False
read_vbat_max_hi = True read_vbat_max_hi = False
read_vbat_max_lo = True read_vbat_max_lo = False
read_ov_mode = True read_ov_mode = False
off = False
class ACUConfigTable: def pack_test_cmds(object_id: ObjectId, tc_queue: TcQueueT):
mppt_mode = TableEntry(bytearray([0x00, 0x00]), TableEntry.uint8_size)
mppt_d_mode = TableEntry(bytearray([0x00, 0x01]), TableEntry.uint8_size)
vboost = TableEntry(bytearray([0x00, 0x02]), TableEntry.uint16_size)
vbat_max_hi = TableEntry(bytearray([0x00, 0x10]), TableEntry.uint16_size)
vbat_max_lo = TableEntry(bytearray([0x00, 0x12]), TableEntry.uint16_size)
ov_mode = TableEntry(bytearray([0x00, 0x1A]), TableEntry.uint8_size)
class ACUHkTable:
temperature1 = TableEntry(bytearray([0x00, 0x1C]), TableEntry.uint16_size)
temperature2 = TableEntry(bytearray([0x00, 0x1D]), TableEntry.uint16_size)
temperature3 = TableEntry(bytearray([0x00, 0x1E]), TableEntry.uint16_size)
# Ground WDT value (remaining seconds until reboot)
wdt_gnd_left = TableEntry(bytearray([0x00, 0x74]), TableEntry.uint32_size)
class CommandId:
PRINT_CHANNEL_STATS = 51
def pack_acu_test_into(
object_id: bytearray, tc_queue: TcQueueT, op_code: str
) -> TcQueueT:
tc_queue.appendleft((QueueCommands.PRINT, "Testing ACU"))
if op_code == "51":
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Print channel stats"))
command = object_id + struct.pack("!I", CommandId.PRINT_CHANNEL_STATS)
command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
return
if ACUTestProcedure.all or ACUTestProcedure.reboot: if ACUTestProcedure.all or ACUTestProcedure.reboot:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reboot")) tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reboot"))
command = pack_reboot_command(object_id) command = gs.pack_reboot_command(object_id)
# command = PusTelecommand(service=8, subservice=128, ssc=22, app_data=command) # command = PusTelecommand(service=8, subservice=128, ssc=22, app_data=command)
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
if ACUTestProcedure.all or ACUTestProcedure.read_gnd_wdt: if ACUTestProcedure.all or ACUTestProcedure.read_gnd_wdt:
tc_queue.appendleft( tc_queue.appendleft(
(QueueCommands.PRINT, "ACU: Reading ground watchdog timer value") (QueueCommands.PRINT, "ACU: Reading ground watchdog timer value")
) )
command = pack_get_param_command( command = gs.pack_get_param_command(
object_id, object_id.as_bytes,
TableIds.hk, gs.TableIds.hk,
ACUHkTable.wdt_gnd_left.parameter_address, ACUHkTable.wdt_gnd_left.parameter_address,
ACUHkTable.wdt_gnd_left.parameter_size, ACUHkTable.wdt_gnd_left.parameter_size,
) )
@ -86,20 +141,20 @@ def pack_acu_test_into(
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
if ACUTestProcedure.all or ACUTestProcedure.gnd_wdt_reset: if ACUTestProcedure.all or ACUTestProcedure.gnd_wdt_reset:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Testing ground watchdog reset")) tc_queue.appendleft((QueueCommands.PRINT, "ACU: Testing ground watchdog reset"))
command = pack_gnd_wdt_reset_command(object_id) command = gs.pack_gnd_wdt_reset_command(object_id)
# command = PusTelecommand(service=8, subservice=128, ssc=21, app_data=command) # command = PusTelecommand(service=8, subservice=128, ssc=21, app_data=command)
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
if ACUTestProcedure.all or ACUTestProcedure.ping: if ACUTestProcedure.all or ACUTestProcedure.ping:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Ping Test")) tc_queue.appendleft((QueueCommands.PRINT, "ACU: Ping Test"))
ping_data = bytearray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) ping_data = bytearray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
command = pack_ping_command(object_id, ping_data) command = gs.pack_ping_command(object_id, ping_data)
# command = PusTelecommand(service=8, subservice=128, ssc=22, app_data=command) # command = PusTelecommand(service=8, subservice=128, ssc=22, app_data=command)
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
if ACUTestProcedure.all or ACUTestProcedure.read_temperature3: if ACUTestProcedure.all or ACUTestProcedure.read_temperature3:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reading temperature 3")) tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reading temperature 3"))
command = pack_get_param_command( command = gs.pack_get_param_command(
object_id, object_id.as_bytes,
TableIds.hk, gs.TableIds.hk,
ACUHkTable.temperature3.parameter_address, ACUHkTable.temperature3.parameter_address,
ACUHkTable.temperature3.parameter_size, ACUHkTable.temperature3.parameter_size,
) )
@ -107,9 +162,9 @@ def pack_acu_test_into(
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
if ACUTestProcedure.all or ACUTestProcedure.read_vboost: if ACUTestProcedure.all or ACUTestProcedure.read_vboost:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reading vboost value")) tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reading vboost value"))
command = pack_get_param_command( command = gs.pack_get_param_command(
object_id, object_id.as_bytes,
TableIds.config, gs.TableIds.config,
ACUConfigTable.vboost.parameter_address, ACUConfigTable.vboost.parameter_address,
ACUConfigTable.vboost.parameter_size, ACUConfigTable.vboost.parameter_size,
) )
@ -117,9 +172,9 @@ def pack_acu_test_into(
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
if ACUTestProcedure.all or ACUTestProcedure.read_vbat_max_hi: if ACUTestProcedure.all or ACUTestProcedure.read_vbat_max_hi:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reading vbat_max_hi")) tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reading vbat_max_hi"))
command = pack_get_param_command( command = gs.pack_get_param_command(
object_id, object_id.as_bytes,
TableIds.config, gs.TableIds.config,
ACUConfigTable.vbat_max_hi.parameter_address, ACUConfigTable.vbat_max_hi.parameter_address,
ACUConfigTable.vbat_max_hi.parameter_size, ACUConfigTable.vbat_max_hi.parameter_size,
) )
@ -127,9 +182,9 @@ def pack_acu_test_into(
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
if ACUTestProcedure.all or ACUTestProcedure.read_vbat_max_lo: if ACUTestProcedure.all or ACUTestProcedure.read_vbat_max_lo:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reading vbat_max_lo")) tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reading vbat_max_lo"))
command = pack_get_param_command( command = gs.pack_get_param_command(
object_id, object_id.as_bytes,
TableIds.config, gs.TableIds.config,
ACUConfigTable.vbat_max_lo.parameter_address, ACUConfigTable.vbat_max_lo.parameter_address,
ACUConfigTable.vbat_max_lo.parameter_size, ACUConfigTable.vbat_max_lo.parameter_size,
) )
@ -137,23 +192,20 @@ def pack_acu_test_into(
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
if ACUTestProcedure.all or ACUTestProcedure.read_ov_mode: if ACUTestProcedure.all or ACUTestProcedure.read_ov_mode:
tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reading ov_mode")) tc_queue.appendleft((QueueCommands.PRINT, "ACU: Reading ov_mode"))
command = pack_get_param_command( command = gs.pack_get_param_command(
object_id, object_id.as_bytes,
TableIds.config, gs.TableIds.config,
ACUConfigTable.ov_mode.parameter_address, ACUConfigTable.ov_mode.parameter_address,
ACUConfigTable.ov_mode.parameter_size, ACUConfigTable.ov_mode.parameter_size,
) )
# 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())
if ACUTestProcedure.all or ACUTestProcedure.off:
tc_queue.appendleft((QueueCommands.PRINT, "P60 Dock: Turning off ACU")) tc_queue.appendleft((QueueCommands.PRINT, "P60 Dock: Turning off ACU"))
command = pack_set_param_command( command = gs.pack_set_param_command(
p60dock_object_id, ACU_HANDLER_ID,
P60DockConfigTable.out_en_0.parameter_address, P60DockConfigTable.out_en_0.parameter_address,
P60DockConfigTable.out_en_0.parameter_size, P60DockConfigTable.out_en_0.parameter_size,
Channel.off, gs.Channel.off,
) )
# 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())
return tc_queue

View File

@ -87,11 +87,12 @@ class P60DockHkTable:
wdt_gnd_left = TableEntry(bytearray([0x00, 0xA8]), TableEntry.uint32_size) wdt_gnd_left = TableEntry(bytearray([0x00, 0xA8]), TableEntry.uint32_size)
def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str): def pack_p60dock_cmds(object_id: ObjectId, tc_queue: TcQueueT, op_code: str):
objb = object_id.as_bytes
if op_code in P60OpCodes.STACK_3V3_ON: if op_code in P60OpCodes.STACK_3V3_ON:
tc_queue.appendleft((QueueCommands.PRINT, Info.STACK_3V3_ON)) tc_queue.appendleft((QueueCommands.PRINT, Info.STACK_3V3_ON))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
P60DockConfigTable.out_en_9.parameter_address, P60DockConfigTable.out_en_9.parameter_address,
P60DockConfigTable.out_en_9.parameter_size, P60DockConfigTable.out_en_9.parameter_size,
Channel.on, Channel.on,
@ -100,7 +101,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code in P60OpCodes.STACK_3V3_OFF: if op_code in P60OpCodes.STACK_3V3_OFF:
tc_queue.appendleft((QueueCommands.PRINT, Info.STACK_3V3_OFF)) tc_queue.appendleft((QueueCommands.PRINT, Info.STACK_3V3_OFF))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
P60DockConfigTable.out_en_9.parameter_address, P60DockConfigTable.out_en_9.parameter_address,
P60DockConfigTable.out_en_9.parameter_size, P60DockConfigTable.out_en_9.parameter_size,
Channel.off, Channel.off,
@ -109,7 +110,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code in P60OpCodes.STACK_5V_ON: if op_code in P60OpCodes.STACK_5V_ON:
tc_queue.appendleft((QueueCommands.PRINT, Info.STACK_5V_ON)) tc_queue.appendleft((QueueCommands.PRINT, Info.STACK_5V_ON))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
P60DockConfigTable.out_en_10.parameter_address, P60DockConfigTable.out_en_10.parameter_address,
P60DockConfigTable.out_en_10.parameter_size, P60DockConfigTable.out_en_10.parameter_size,
Channel.on, Channel.on,
@ -118,7 +119,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code in P60OpCodes.STACK_5V_OFF: if op_code in P60OpCodes.STACK_5V_OFF:
tc_queue.appendleft((QueueCommands.PRINT, Info.STACK_5V_OFF)) tc_queue.appendleft((QueueCommands.PRINT, Info.STACK_5V_OFF))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
P60DockConfigTable.out_en_10.parameter_address, P60DockConfigTable.out_en_10.parameter_address,
P60DockConfigTable.out_en_10.parameter_size, P60DockConfigTable.out_en_10.parameter_size,
Channel.off, Channel.off,
@ -143,13 +144,13 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "P60 Dock: Print Switches, Voltages, Currents") (QueueCommands.PRINT, "P60 Dock: Print Switches, Voltages, Currents")
) )
command = generate_action_command( command = generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I
) )
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
if op_code in GomspaceOpCodes.PRINT_LATCHUPS: if op_code in GomspaceOpCodes.PRINT_LATCHUPS:
tc_queue.appendleft((QueueCommands.PRINT, "P60 Dock: Print Latchups")) tc_queue.appendleft((QueueCommands.PRINT, "P60 Dock: Print Latchups"))
command = generate_action_command( command = generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS
) )
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
if P60DockTestProcedure.all or P60DockTestProcedure.reboot: if P60DockTestProcedure.all or P60DockTestProcedure.reboot:
@ -162,7 +163,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "P60 Dock: Reading ground watchdog timer value") (QueueCommands.PRINT, "P60 Dock: Reading ground watchdog timer value")
) )
command = pack_get_param_command( command = pack_get_param_command(
object_id, objb,
TableIds.hk, TableIds.hk,
P60DockHkTable.wdt_gnd_left.parameter_address, P60DockHkTable.wdt_gnd_left.parameter_address,
P60DockHkTable.wdt_gnd_left.parameter_size, P60DockHkTable.wdt_gnd_left.parameter_size,
@ -188,7 +189,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
) )
parameter = 0 # set channel off parameter = 0 # set channel off
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
P60DockConfigTable.out_en_3.parameter_address, P60DockConfigTable.out_en_3.parameter_address,
P60DockConfigTable.out_en_3.parameter_size, P60DockConfigTable.out_en_3.parameter_size,
parameter, parameter,
@ -200,7 +201,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "P60 Dock: Testing temperature reading") (QueueCommands.PRINT, "P60 Dock: Testing temperature reading")
) )
command = pack_get_param_command( command = pack_get_param_command(
object_id, objb,
TableIds.hk, TableIds.hk,
P60DockHkTable.temperature1.parameter_address, P60DockHkTable.temperature1.parameter_address,
P60DockHkTable.temperature1.parameter_size, P60DockHkTable.temperature1.parameter_size,
@ -212,7 +213,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "P60 Dock: Testing Output Channel 3 state (PDU2)") (QueueCommands.PRINT, "P60 Dock: Testing Output Channel 3 state (PDU2)")
) )
command = pack_get_param_command( command = pack_get_param_command(
object_id, objb,
TableIds.config, TableIds.config,
P60DockConfigTable.out_en_3.parameter_address, P60DockConfigTable.out_en_3.parameter_address,
P60DockConfigTable.out_en_3.parameter_size, P60DockConfigTable.out_en_3.parameter_size,
@ -227,7 +228,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
) )
) )
command = pack_get_param_command( command = pack_get_param_command(
object_id, objb,
TableIds.config, TableIds.config,
P60DockConfigTable.cur_lu_lim_0.parameter_address, P60DockConfigTable.cur_lu_lim_0.parameter_address,
P60DockConfigTable.cur_lu_lim_0.parameter_size, P60DockConfigTable.cur_lu_lim_0.parameter_size,
@ -240,7 +241,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
) )
parameter = 1 # set channel on parameter = 1 # set channel on
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
P60DockConfigTable.out_en_3.parameter_address, P60DockConfigTable.out_en_3.parameter_address,
P60DockConfigTable.out_en_3.parameter_size, P60DockConfigTable.out_en_3.parameter_size,
parameter, parameter,
@ -253,7 +254,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
) )
table_id_invalid = 5 table_id_invalid = 5
command = pack_get_param_command( command = pack_get_param_command(
object_id, objb,
table_id_invalid, table_id_invalid,
P60DockHkTable.temperature1.parameter_address, P60DockHkTable.temperature1.parameter_address,
P60DockHkTable.temperature1.parameter_size, P60DockHkTable.temperature1.parameter_size,
@ -269,7 +270,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
) )
invalid_address = bytearray([0x01, 0xF4]) invalid_address = bytearray([0x01, 0xF4])
command = pack_get_param_command( command = pack_get_param_command(
object_id, objb,
TableIds.hk, TableIds.hk,
invalid_address, invalid_address,
P60DockHkTable.temperature1.parameter_size, P60DockHkTable.temperature1.parameter_size,
@ -286,7 +287,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
parameter_size = 2 parameter_size = 2
parameter = 1 parameter = 1
command = pack_set_param_command( command = pack_set_param_command(
object_id, invalid_address, parameter_size, parameter objb, invalid_address, parameter_size, parameter
) )
# command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command) # command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command)
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
@ -299,7 +300,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
) )
invalid_size = 5 invalid_size = 5
command = pack_get_param_command( command = pack_get_param_command(
object_id, objb,
TableIds.hk, TableIds.hk,
P60DockHkTable.temperature1.parameter_address, P60DockHkTable.temperature1.parameter_address,
invalid_size, invalid_size,
@ -314,7 +315,7 @@ def pack_p60dock_cmds(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
) )
parameter = 1 parameter = 1
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
P60DockConfigTable.out_en_3.parameter_address, P60DockConfigTable.out_en_3.parameter_address,
invalid_size, invalid_size,
parameter, parameter,

295
pus_tc/devs/pcdu.py Normal file
View File

@ -0,0 +1,295 @@
from config.definitions import CustomServiceList
from tmtccmd.config import ServiceOpCodeDictT, add_op_code_entry, add_service_op_code_entry, \
OpCodeDictKeys
from pus_tc.devs.p60dock import P60OpCodes, GomspaceOpCodes, Info
from pus_tc.devs.pdu1 import Pdu1OpCodes
from pus_tc.devs.pdu2 import Pdu2OpCodes
from pus_tc.devs.acu import add_acu_cmds
from gomspace.gomspace_common import Info as GsInfo
def add_p60_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict = dict()
add_op_code_entry(
op_code_dict=op_code_dict,
keys=P60OpCodes.STACK_3V3_ON,
info=Info.STACK_3V3_ON,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=P60OpCodes.STACK_3V3_OFF,
info=Info.STACK_3V3_OFF,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=P60OpCodes.STACK_5V_ON,
info=Info.STACK_5V_ON,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=P60OpCodes.STACK_5V_OFF,
info=Info.STACK_5V_OFF,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE,
info=GsInfo.REQUEST_CORE_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
info=GsInfo.REQUEST_AUX_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_SWITCH_V_I,
info="P60 Dock: Print Switches, Voltages, Currents",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_LATCHUPS,
info="P60 Dock: Print Latchups",
)
add_op_code_entry(op_code_dict=op_code_dict, keys=P60OpCodes.TEST, info="P60 Tests")
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name=CustomServiceList.P60DOCK.value,
info="P60 Device",
op_code_entry=op_code_dict,
)
def add_pdu1_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict = dict()
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.TCS_BOARD_OFF.value,
info="PDU1: Turn TCS board off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.STAR_TRACKER_ON.value,
info="PDU1: Turn star tracker on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.STAR_TRACKER_OFF.value,
info="PDU1: Turn star tracker off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SUS_NOMINAL_ON.value,
info="PDU1: Turn SUS nominal on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SUS_NOMINAL_OFF.value,
info="PDU1: Turn SUS nominal off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.ACS_A_SIDE_ON.value,
info="PDU1: Turn ACS A side on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.ACS_A_SIDE_OFF.value,
info="PDU1: Turn ACS A side off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SYRLINKS_ON.value,
info="PDU1: Turn Syrlinks on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SYRLINKS_OFF.value,
info="PDU1: Turn Syrlinks off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.MGT_ON.value,
info="PDU1: Turn MGT on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.MGT_OFF.value,
info="PDU1: Turn MGT off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.PLOC_ON.value,
info="PDU1: Turn PLOC on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.PLOC_OFF.value,
info="PDU1: Turn PLOC off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SCEX_ON.value,
info="PDU1: Turn Solar Cell Experiment on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.SCEX_OFF.value,
info="PDU1: Turn Solar Cell Experiment off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE,
info=GsInfo.REQUEST_CORE_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
info=GsInfo.REQUEST_AUX_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_SWITCH_V_I,
info="PDU1: Print Switches, Voltages, Currents",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.TCS_BOARD_ON.value,
info="PDU1: Turn TCS board on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_LATCHUPS,
info="PDU1: Print Latchups",
)
add_op_code_entry(
op_code_dict=op_code_dict, keys=Pdu1OpCodes.TESTS.value, info="PDU1 Tests"
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name=CustomServiceList.PDU1.value,
info="PDU1 Device",
op_code_entry=op_code_dict,
)
def add_pdu2_cmds(cmd_dict: ServiceOpCodeDictT):
op_code_dict = dict()
add_op_code_entry(op_code_dict=op_code_dict, keys="0", info="PDU2 Tests")
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.ACS_SIDE_B_ON.value,
info="PDU2: Turn ACS Side B on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.ACS_SIDE_B_OFF.value,
info="PDU2: Turn ACS Side B off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SUS_REDUNDANT_ON.value,
info="PDU2: Turn SUS redundant on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SUS_REDUNDANT_OFF.value,
info="PDU2: Turn SUS redundant off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.RW_ON.value,
info="PDU2: Turn reaction wheels on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.RW_OFF.value,
info="PDU2: Turn reaction wheels off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_PCDU_VBAT_NOM_ON.value,
info="PDU2: PL PCDU Switch Channel Nominal (1) on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_PCDU_VBAT_NOM_OFF.value,
info="PDU2: PL PCDU Switch Channel Nominal (1) off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_PCDU_VBAT_RED_ON.value,
info="PDU2: PL PCDU Switch Channel Redundant (1) on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_PCDU_VBAT_RED_OFF.value,
info="PDU2: PL PCDU Switch Channel Redundant (1) off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.TCS_HEATER_IN_ON.value,
info="PDU2: Switch TCS Heater Input on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.TCS_HEATER_IN_OFF.value,
info="PDU2: Switch TCS Heater Input off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SOLAR_ARRAY_DEPL_ON.value,
info="PDU2: Switch Solar Array Deployment On",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SOLAR_ARRAY_DEPL_OFF.value,
info="PDU2: Switch Solar Array Deployment Off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_CAMERA_ON.value,
info="PDU2: Turn payload camera on",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.PL_CAMERA_OFF.value,
info="PDU2: Turn payload camera off",
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_CORE_HK_ONCE,
info=GsInfo.REQUEST_CORE_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.REQUEST_AUX_HK_ONCE,
info=GsInfo.REQUEST_AUX_HK_ONCE,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_SWITCH_V_I,
info="PDU2: Print Switches, Voltages, Currents",
options={OpCodeDictKeys.TIMEOUT: 2.0},
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_LATCHUPS,
info="PDU2: Print Latchups",
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name="pdu2",
info="PDU2 Device",
op_code_entry=op_code_dict,
)
def add_pcdu_cmds(cmd_dict: ServiceOpCodeDictT):
add_p60_cmds(cmd_dict)
add_pdu1_cmds(cmd_dict)
add_pdu2_cmds(cmd_dict)
add_acu_cmds(cmd_dict)

View File

@ -54,13 +54,13 @@ class PDU1TestProcedure:
turn_channel_3_off = False turn_channel_3_off = False
def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str): def pack_pdu1_commands(object_id: ObjectId, tc_queue: TcQueueT, op_code: str):
tc_queue.appendleft((QueueCommands.PRINT, "Commanding PDU1")) tc_queue.appendleft((QueueCommands.PRINT, "Commanding PDU1"))
objb = object_id.as_bytes
if op_code == Pdu1OpCodes.TCS_BOARD_ON.value: if op_code == Pdu1OpCodes.TCS_BOARD_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn TCS board on")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn TCS board on"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_0.parameter_address, PDUConfigTable.out_en_0.parameter_address,
PDUConfigTable.out_en_0.parameter_size, PDUConfigTable.out_en_0.parameter_size,
Channel.on, Channel.on,
@ -69,7 +69,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.TCS_BOARD_OFF.value: if op_code == Pdu1OpCodes.TCS_BOARD_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn TCS board off")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn TCS board off"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_0.parameter_address, PDUConfigTable.out_en_0.parameter_address,
PDUConfigTable.out_en_0.parameter_size, PDUConfigTable.out_en_0.parameter_size,
Channel.off, Channel.off,
@ -78,7 +78,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.STAR_TRACKER_ON.value: if op_code == Pdu1OpCodes.STAR_TRACKER_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn star tracker on")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn star tracker on"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_2.parameter_address, PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size, PDUConfigTable.out_en_2.parameter_size,
Channel.on, Channel.on,
@ -87,7 +87,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.STAR_TRACKER_OFF.value: if op_code == Pdu1OpCodes.STAR_TRACKER_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn star tracker off")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn star tracker off"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_2.parameter_address, PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size, PDUConfigTable.out_en_2.parameter_size,
Channel.off, Channel.off,
@ -96,7 +96,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.SUS_NOMINAL_ON.value: if op_code == Pdu1OpCodes.SUS_NOMINAL_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn SUS nominal on")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn SUS nominal on"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_4.parameter_address, PDUConfigTable.out_en_4.parameter_address,
PDUConfigTable.out_en_4.parameter_size, PDUConfigTable.out_en_4.parameter_size,
Channel.on, Channel.on,
@ -105,7 +105,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.SUS_NOMINAL_OFF.value: if op_code == Pdu1OpCodes.SUS_NOMINAL_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn SUS nominal off")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn SUS nominal off"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_4.parameter_address, PDUConfigTable.out_en_4.parameter_address,
PDUConfigTable.out_en_4.parameter_size, PDUConfigTable.out_en_4.parameter_size,
Channel.off, Channel.off,
@ -114,7 +114,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.ACS_A_SIDE_ON.value: if op_code == Pdu1OpCodes.ACS_A_SIDE_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn ACS Side A on")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn ACS Side A on"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_7.parameter_address, PDUConfigTable.out_en_7.parameter_address,
PDUConfigTable.out_en_7.parameter_size, PDUConfigTable.out_en_7.parameter_size,
Channel.on, Channel.on,
@ -123,7 +123,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.ACS_A_SIDE_OFF.value: if op_code == Pdu1OpCodes.ACS_A_SIDE_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn ACS Side A off")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn ACS Side A off"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_7.parameter_address, PDUConfigTable.out_en_7.parameter_address,
PDUConfigTable.out_en_7.parameter_size, PDUConfigTable.out_en_7.parameter_size,
Channel.off, Channel.off,
@ -132,7 +132,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.SUS_NOMINAL_OFF.value: if op_code == Pdu1OpCodes.SUS_NOMINAL_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn SUS nominal off")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn SUS nominal off"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_4.parameter_address, PDUConfigTable.out_en_4.parameter_address,
PDUConfigTable.out_en_4.parameter_size, PDUConfigTable.out_en_4.parameter_size,
Channel.off, Channel.off,
@ -143,7 +143,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU1: Turn Solar Cell Experiment on") (QueueCommands.PRINT, "PDU1: Turn Solar Cell Experiment on")
) )
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_5.parameter_address, PDUConfigTable.out_en_5.parameter_address,
PDUConfigTable.out_en_5.parameter_size, PDUConfigTable.out_en_5.parameter_size,
Channel.on, Channel.on,
@ -154,7 +154,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU1: Turn Solar Cell Experiment off") (QueueCommands.PRINT, "PDU1: Turn Solar Cell Experiment off")
) )
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_5.parameter_address, PDUConfigTable.out_en_5.parameter_address,
PDUConfigTable.out_en_5.parameter_size, PDUConfigTable.out_en_5.parameter_size,
Channel.off, Channel.off,
@ -163,7 +163,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.SYRLINKS_ON.value: if op_code == Pdu1OpCodes.SYRLINKS_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn Syrlinks on")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn Syrlinks on"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_1.parameter_address, PDUConfigTable.out_en_1.parameter_address,
PDUConfigTable.out_en_1.parameter_size, PDUConfigTable.out_en_1.parameter_size,
Channel.on, Channel.on,
@ -172,7 +172,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.SYRLINKS_OFF.value: if op_code == Pdu1OpCodes.SYRLINKS_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn Syrlinks off")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn Syrlinks off"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_1.parameter_address, PDUConfigTable.out_en_1.parameter_address,
PDUConfigTable.out_en_1.parameter_size, PDUConfigTable.out_en_1.parameter_size,
Channel.off, Channel.off,
@ -181,7 +181,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.MGT_ON.value: if op_code == Pdu1OpCodes.MGT_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn MGT on")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn MGT on"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_3.parameter_address, PDUConfigTable.out_en_3.parameter_address,
PDUConfigTable.out_en_3.parameter_size, PDUConfigTable.out_en_3.parameter_size,
Channel.on, Channel.on,
@ -190,7 +190,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.MGT_OFF.value: if op_code == Pdu1OpCodes.MGT_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn MGT off")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn MGT off"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_3.parameter_address, PDUConfigTable.out_en_3.parameter_address,
PDUConfigTable.out_en_3.parameter_size, PDUConfigTable.out_en_3.parameter_size,
Channel.off, Channel.off,
@ -199,7 +199,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.PLOC_ON.value: if op_code == Pdu1OpCodes.PLOC_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn PLOC on")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn PLOC on"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_6.parameter_address, PDUConfigTable.out_en_6.parameter_address,
PDUConfigTable.out_en_6.parameter_size, PDUConfigTable.out_en_6.parameter_size,
Channel.on, Channel.on,
@ -208,7 +208,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu1OpCodes.PLOC_OFF.value: if op_code == Pdu1OpCodes.PLOC_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn PLOC off")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn PLOC off"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_6.parameter_address, PDUConfigTable.out_en_6.parameter_address,
PDUConfigTable.out_en_6.parameter_size, PDUConfigTable.out_en_6.parameter_size,
Channel.off, Channel.off,
@ -229,13 +229,13 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU1: Print Switches, Voltages, Currents") (QueueCommands.PRINT, "PDU1: Print Switches, Voltages, Currents")
) )
command = generate_action_command( command = generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I
) )
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
if op_code in GomspaceOpCodes.PRINT_LATCHUPS: if op_code in GomspaceOpCodes.PRINT_LATCHUPS:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Print Latchups")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Print Latchups"))
command = generate_action_command( command = generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS
) )
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
if PDU1TestProcedure.all or PDU1TestProcedure.ping: if PDU1TestProcedure.all or PDU1TestProcedure.ping:
@ -246,7 +246,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if PDU1TestProcedure.all or PDU1TestProcedure.read_temperature: if PDU1TestProcedure.all or PDU1TestProcedure.read_temperature:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Testing temperature reading")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Testing temperature reading"))
command = pack_get_param_command( command = pack_get_param_command(
object_id, objb,
TableIds.hk, TableIds.hk,
PDUHkTable.temperature.parameter_address, PDUHkTable.temperature.parameter_address,
PDUHkTable.temperature.parameter_size, PDUHkTable.temperature.parameter_size,
@ -257,7 +257,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU1: Turn channel 2 on (Star Tracker)") (QueueCommands.PRINT, "PDU1: Turn channel 2 on (Star Tracker)")
) )
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_2.parameter_address, PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size, PDUConfigTable.out_en_2.parameter_size,
Channel.on, Channel.on,
@ -268,7 +268,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU1: Turn channel 2 off (Star Tracker)") (QueueCommands.PRINT, "PDU1: Turn channel 2 off (Star Tracker)")
) )
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_2.parameter_address, PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size, PDUConfigTable.out_en_2.parameter_size,
Channel.off, Channel.off,
@ -277,7 +277,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_3_on: if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_3_on:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn channel 3 on (MTQ)")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn channel 3 on (MTQ)"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_3.parameter_address, PDUConfigTable.out_en_3.parameter_address,
PDUConfigTable.out_en_3.parameter_size, PDUConfigTable.out_en_3.parameter_size,
Channel.on, Channel.on,
@ -286,7 +286,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_3_off: if PDU1TestProcedure.all or PDU1TestProcedure.turn_channel_3_off:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn channel 3 off (MTQ)")) tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn channel 3 off (MTQ)"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_3.parameter_address, PDUConfigTable.out_en_3.parameter_address,
PDUConfigTable.out_en_3.parameter_size, PDUConfigTable.out_en_3.parameter_size,
Channel.off, Channel.off,

View File

@ -66,13 +66,13 @@ class PDU2TestProcedure:
request_hk_table = False request_hk_table = False
def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str): def pack_pdu2_commands(object_id: ObjectId, tc_queue: TcQueueT, op_code: str):
tc_queue.appendleft((QueueCommands.PRINT, "Testing PDU2")) tc_queue.appendleft((QueueCommands.PRINT, "Testing PDU2"))
objb = object_id.as_bytes
if op_code == Pdu2OpCodes.ACS_SIDE_B_ON.value: if op_code == Pdu2OpCodes.ACS_SIDE_B_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn ACS Side B on")) tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn ACS Side B on"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_7.parameter_address, PDUConfigTable.out_en_7.parameter_address,
PDUConfigTable.out_en_7.parameter_size, PDUConfigTable.out_en_7.parameter_size,
Channel.on, Channel.on,
@ -82,7 +82,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.ACS_SIDE_B_OFF.value: if op_code == Pdu2OpCodes.ACS_SIDE_B_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn ACS Side B off")) tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn ACS Side B off"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_7.parameter_address, PDUConfigTable.out_en_7.parameter_address,
PDUConfigTable.out_en_7.parameter_size, PDUConfigTable.out_en_7.parameter_size,
Channel.off, Channel.off,
@ -92,7 +92,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.Q7S_OFF.value: if op_code == Pdu2OpCodes.Q7S_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "Turning off Q7S OBC")) tc_queue.appendleft((QueueCommands.PRINT, "Turning off Q7S OBC"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_0.parameter_address, PDUConfigTable.out_en_0.parameter_address,
PDUConfigTable.out_en_0.parameter_size, PDUConfigTable.out_en_0.parameter_size,
Channel.off, Channel.off,
@ -101,7 +101,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.SUS_REDUNDANT_ON.value: if op_code == Pdu2OpCodes.SUS_REDUNDANT_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn SUS redundant on")) tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn SUS redundant on"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_4.parameter_address, PDUConfigTable.out_en_4.parameter_address,
PDUConfigTable.out_en_4.parameter_size, PDUConfigTable.out_en_4.parameter_size,
Channel.on, Channel.on,
@ -110,7 +110,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.SUS_REDUNDANT_OFF.value: if op_code == Pdu2OpCodes.SUS_REDUNDANT_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn SUS redundant off")) tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn SUS redundant off"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_4.parameter_address, PDUConfigTable.out_en_4.parameter_address,
PDUConfigTable.out_en_4.parameter_size, PDUConfigTable.out_en_4.parameter_size,
Channel.off, Channel.off,
@ -119,7 +119,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.RW_ON.value: if op_code == Pdu2OpCodes.RW_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn reaction wheels on")) tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn reaction wheels on"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_2.parameter_address, PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size, PDUConfigTable.out_en_2.parameter_size,
Channel.on, Channel.on,
@ -128,7 +128,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.RW_OFF.value: if op_code == Pdu2OpCodes.RW_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn reaction wheels off")) tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn reaction wheels off"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_2.parameter_address, PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size, PDUConfigTable.out_en_2.parameter_size,
Channel.off, Channel.off,
@ -139,7 +139,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Turn PDU2 PL PCDU Channel 1 on") (QueueCommands.PRINT, "PDU2: Turn PDU2 PL PCDU Channel 1 on")
) )
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_1.parameter_address, PDUConfigTable.out_en_1.parameter_address,
PDUConfigTable.out_en_1.parameter_size, PDUConfigTable.out_en_1.parameter_size,
Channel.on, Channel.on,
@ -150,7 +150,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Turn PDU2 PL PCDU Channel 1 off") (QueueCommands.PRINT, "PDU2: Turn PDU2 PL PCDU Channel 1 off")
) )
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_1.parameter_address, PDUConfigTable.out_en_1.parameter_address,
PDUConfigTable.out_en_1.parameter_size, PDUConfigTable.out_en_1.parameter_size,
Channel.off, Channel.off,
@ -161,7 +161,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Turn PDU2 PL PCDU Channel 6 on") (QueueCommands.PRINT, "PDU2: Turn PDU2 PL PCDU Channel 6 on")
) )
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_6.parameter_address, PDUConfigTable.out_en_6.parameter_address,
PDUConfigTable.out_en_6.parameter_size, PDUConfigTable.out_en_6.parameter_size,
Channel.off, Channel.off,
@ -172,7 +172,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Turn PDU2 PL PCDU Channel 6 off") (QueueCommands.PRINT, "PDU2: Turn PDU2 PL PCDU Channel 6 off")
) )
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_6.parameter_address, PDUConfigTable.out_en_6.parameter_address,
PDUConfigTable.out_en_6.parameter_size, PDUConfigTable.out_en_6.parameter_size,
Channel.off, Channel.off,
@ -181,7 +181,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.TCS_HEATER_IN_ON.value: if op_code == Pdu2OpCodes.TCS_HEATER_IN_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn TCS Heater Input on")) tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn TCS Heater Input on"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_3.parameter_address, PDUConfigTable.out_en_3.parameter_address,
PDUConfigTable.out_en_3.parameter_size, PDUConfigTable.out_en_3.parameter_size,
Channel.on, Channel.on,
@ -190,7 +190,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.TCS_HEATER_IN_OFF.value: if op_code == Pdu2OpCodes.TCS_HEATER_IN_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn TCS Heater Input off")) tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn TCS Heater Input off"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_3.parameter_address, PDUConfigTable.out_en_3.parameter_address,
PDUConfigTable.out_en_3.parameter_size, PDUConfigTable.out_en_3.parameter_size,
Channel.off, Channel.off,
@ -201,7 +201,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Turn Solar Array Deployment On") (QueueCommands.PRINT, "PDU2: Turn Solar Array Deployment On")
) )
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_5.parameter_address, PDUConfigTable.out_en_5.parameter_address,
PDUConfigTable.out_en_5.parameter_size, PDUConfigTable.out_en_5.parameter_size,
Channel.on, Channel.on,
@ -212,7 +212,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Turn Solar Array Deployment Off") (QueueCommands.PRINT, "PDU2: Turn Solar Array Deployment Off")
) )
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_5.parameter_address, PDUConfigTable.out_en_5.parameter_address,
PDUConfigTable.out_en_5.parameter_size, PDUConfigTable.out_en_5.parameter_size,
Channel.off, Channel.off,
@ -221,7 +221,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.PL_CAMERA_ON.value: if op_code == Pdu2OpCodes.PL_CAMERA_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn payload camera on")) tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn payload camera on"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_8.parameter_address, PDUConfigTable.out_en_8.parameter_address,
PDUConfigTable.out_en_8.parameter_size, PDUConfigTable.out_en_8.parameter_size,
Channel.on, Channel.on,
@ -230,7 +230,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if op_code == Pdu2OpCodes.PL_CAMERA_OFF.value: if op_code == Pdu2OpCodes.PL_CAMERA_OFF.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn payload camera off")) tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn payload camera off"))
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_8.parameter_address, PDUConfigTable.out_en_8.parameter_address,
PDUConfigTable.out_en_8.parameter_size, PDUConfigTable.out_en_8.parameter_size,
Channel.off, Channel.off,
@ -251,13 +251,13 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Print Switches, Currents, Voltahes") (QueueCommands.PRINT, "PDU2: Print Switches, Currents, Voltahes")
) )
command = generate_action_command( command = generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I
) )
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
if op_code in GomspaceOpCodes.PRINT_LATCHUPS: if op_code in GomspaceOpCodes.PRINT_LATCHUPS:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Print Latchups")) tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Print Latchups"))
command = generate_action_command( command = generate_action_command(
object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS object_id=objb, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS
) )
tc_queue.appendleft(command.pack_command_tuple()) tc_queue.appendleft(command.pack_command_tuple())
if PDU2TestProcedure.all or PDU2TestProcedure.reboot: if PDU2TestProcedure.all or PDU2TestProcedure.reboot:
@ -269,7 +269,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Reading ground watchdog timer value") (QueueCommands.PRINT, "PDU2: Reading ground watchdog timer value")
) )
command = pack_get_param_command( command = pack_get_param_command(
object_id, objb,
TableIds.hk, TableIds.hk,
PDUHkTable.wdt_gnd_left.parameter_address, PDUHkTable.wdt_gnd_left.parameter_address,
PDUHkTable.wdt_gnd_left.parameter_size, PDUHkTable.wdt_gnd_left.parameter_size,
@ -294,7 +294,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
) )
) )
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_2.parameter_address, PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size, PDUConfigTable.out_en_2.parameter_size,
Channel.on, Channel.on,
@ -303,7 +303,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
if PDU2TestProcedure.all or PDU2TestProcedure.read_temperature: if PDU2TestProcedure.all or PDU2TestProcedure.read_temperature:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Testing temperature reading")) tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Testing temperature reading"))
command = pack_get_param_command( command = pack_get_param_command(
object_id, objb,
TableIds.hk, TableIds.hk,
PDUHkTable.temperature.parameter_address, PDUHkTable.temperature.parameter_address,
PDUHkTable.temperature.parameter_size, PDUHkTable.temperature.parameter_size,
@ -314,7 +314,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Reading output channel 2 state (TCS Heater)") (QueueCommands.PRINT, "PDU2: Reading output channel 2 state (TCS Heater)")
) )
command = pack_get_param_command( command = pack_get_param_command(
object_id, objb,
TableIds.config, TableIds.config,
PDUConfigTable.out_en_2.parameter_address, PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size, PDUConfigTable.out_en_2.parameter_size,
@ -328,7 +328,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
) )
) )
command = pack_get_param_command( command = pack_get_param_command(
object_id, objb,
TableIds.config, TableIds.config,
PDUConfigTable.cur_lu_lim_0.parameter_address, PDUConfigTable.cur_lu_lim_0.parameter_address,
PDUConfigTable.cur_lu_lim_0.parameter_size, PDUConfigTable.cur_lu_lim_0.parameter_size,
@ -339,7 +339,7 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
(QueueCommands.PRINT, "PDU2: Testing setting output channel 2 off") (QueueCommands.PRINT, "PDU2: Testing setting output channel 2 off")
) )
command = pack_set_param_command( command = pack_set_param_command(
object_id, objb,
PDUConfigTable.out_en_2.parameter_address, PDUConfigTable.out_en_2.parameter_address,
PDUConfigTable.out_en_2.parameter_size, PDUConfigTable.out_en_2.parameter_size,
Channel.off, Channel.off,

View File

@ -20,7 +20,7 @@ from pus_tc.devs.p60dock import pack_p60dock_cmds
from pus_tc.devs.pdu2 import pack_pdu2_commands from pus_tc.devs.pdu2 import pack_pdu2_commands
from pus_tc.devs.pdu1 import pack_pdu1_commands from pus_tc.devs.pdu1 import pack_pdu1_commands
from pus_tc.devs.bpx_batt import pack_bpx_commands from pus_tc.devs.bpx_batt import pack_bpx_commands
from pus_tc.devs.acu import pack_acu_test_into from pus_tc.devs.acu import pack_acu_commands
from pus_tc.devs.solar_array_deployment import pack_solar_array_deployment_test_into from pus_tc.devs.solar_array_deployment import pack_solar_array_deployment_test_into
from pus_tc.devs.imtq import pack_imtq_test_into from pus_tc.devs.imtq import pack_imtq_test_into
from pus_tc.devs.tmp1075 import pack_tmp1075_test_into from pus_tc.devs.tmp1075 import pack_tmp1075_test_into
@ -44,6 +44,7 @@ from pus_tc.system.proc import pack_proc_commands
from pus_tc.system.controllers import pack_controller_commands from pus_tc.system.controllers import pack_controller_commands
from config.definitions import CustomServiceList from config.definitions import CustomServiceList
from config.object_ids import ( from config.object_ids import (
get_object_ids,
P60_DOCK_HANDLER, P60_DOCK_HANDLER,
PDU_1_HANDLER_ID, PDU_1_HANDLER_ID,
PDU_2_HANDLER_ID, PDU_2_HANDLER_ID,
@ -98,6 +99,7 @@ def pre_tc_send_cb(
def pack_service_queue_user( def pack_service_queue_user(
service: Union[str, int], op_code: str, service_queue: TcQueueT service: Union[str, int], op_code: str, service_queue: TcQueueT
): ):
obj_id_man = get_object_ids()
if service == CoreServiceList.SERVICE_5.value: if service == CoreServiceList.SERVICE_5.value:
return pack_generic_service5_test_into(tc_queue=service_queue) return pack_generic_service5_test_into(tc_queue=service_queue)
if service == CoreServiceList.SERVICE_17.value: if service == CoreServiceList.SERVICE_17.value:
@ -107,23 +109,23 @@ def pack_service_queue_user(
if service == CoreServiceList.SERVICE_200.value: if service == CoreServiceList.SERVICE_200.value:
return pack_service200_test_into(tc_queue=service_queue) return pack_service200_test_into(tc_queue=service_queue)
if service == CustomServiceList.P60DOCK.value: if service == CustomServiceList.P60DOCK.value:
object_id = P60_DOCK_HANDLER object_id = obj_id_man.get(P60_DOCK_HANDLER)
return pack_p60dock_cmds( return pack_p60dock_cmds(
object_id=object_id, tc_queue=service_queue, op_code=op_code object_id=object_id, tc_queue=service_queue, op_code=op_code
) )
if service == CustomServiceList.PDU1.value: if service == CustomServiceList.PDU1.value:
object_id = PDU_1_HANDLER_ID object_id = obj_id_man.get(PDU_1_HANDLER_ID)
return pack_pdu1_commands( return pack_pdu1_commands(
object_id=object_id, tc_queue=service_queue, op_code=op_code object_id=object_id, tc_queue=service_queue, op_code=op_code
) )
if service == CustomServiceList.PDU2.value: if service == CustomServiceList.PDU2.value:
object_id = PDU_2_HANDLER_ID object_id = obj_id_man.get(PDU_2_HANDLER_ID)
return pack_pdu2_commands( return pack_pdu2_commands(
object_id=object_id, tc_queue=service_queue, op_code=op_code object_id=object_id, tc_queue=service_queue, op_code=op_code
) )
if service == CustomServiceList.ACU.value: if service == CustomServiceList.ACU.value:
object_id = ACU_HANDLER_ID object_id = obj_id_man.get(ACU_HANDLER_ID)
return pack_acu_test_into( return pack_acu_commands(
object_id=object_id, tc_queue=service_queue, op_code=op_code object_id=object_id, tc_queue=service_queue, op_code=op_code
) )
if service == CustomServiceList.BPX_BATTERY.value: if service == CustomServiceList.BPX_BATTERY.value:

View File

@ -292,3 +292,13 @@ def handle_p60_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
printer.print_validity_buffer( printer.print_validity_buffer(
validity_buffer=hk_data[current_idx:], num_vars=27 validity_buffer=hk_data[current_idx:], num_vars=27
) )
def handle_acu_hk_data(printer: FsfwTmTcPrinter, set_id: int, hk_data: bytes):
pw = PrintWrapper(printer=printer)
if set_id == SetIds.ACU_CORE:
pw.dlog("Received ACU Core HK. Voltages in mV, currents in mA")
pass
if set_id == SetIds.ACU_AUX:
pw.dlog("Received ACU Aux HK. Voltages in mV, currents in mA")
pass