diff --git a/.idea/runConfigurations/Heater_Test.xml b/.idea/runConfigurations/Heater_Test.xml
index 8336926..65618ba 100644
--- a/.idea/runConfigurations/Heater_Test.xml
+++ b/.idea/runConfigurations/Heater_Test.xml
@@ -13,7 +13,7 @@
-
+
diff --git a/.idea/runConfigurations/S_A_Deployment_Test_UDP.xml b/.idea/runConfigurations/S_A_Deployment_Test.xml
similarity index 81%
rename from .idea/runConfigurations/S_A_Deployment_Test_UDP.xml
rename to .idea/runConfigurations/S_A_Deployment_Test.xml
index 3a73221..8b8caa3 100644
--- a/.idea/runConfigurations/S_A_Deployment_Test_UDP.xml
+++ b/.idea/runConfigurations/S_A_Deployment_Test.xml
@@ -1,5 +1,5 @@
-
+
@@ -13,7 +13,7 @@
-
+
diff --git a/.idea/runConfigurations/tmtcclient_CLI.xml b/.idea/runConfigurations/tmtccli.xml
similarity index 89%
rename from .idea/runConfigurations/tmtcclient_CLI.xml
rename to .idea/runConfigurations/tmtccli.xml
index 08531e2..1b4b29b 100644
--- a/.idea/runConfigurations/tmtcclient_CLI.xml
+++ b/.idea/runConfigurations/tmtccli.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/.idea/runConfigurations/tmtcclient_GUI.xml b/.idea/runConfigurations/tmtcgui.xml
similarity index 89%
rename from .idea/runConfigurations/tmtcclient_GUI.xml
rename to .idea/runConfigurations/tmtcgui.xml
index 1e9e748..845b1c6 100644
--- a/.idea/runConfigurations/tmtcclient_GUI.xml
+++ b/.idea/runConfigurations/tmtcgui.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/config/object_ids.py b/config/object_ids.py
index b2c9756..69b927f 100644
--- a/config/object_ids.py
+++ b/config/object_ids.py
@@ -15,7 +15,7 @@ __OBJECT_ID_DICT = None
# Core Object IDs
CORE_CONTROLLER_ID = bytes([0x43, 0x00, 0x00, 0x03])
-SOLAR_ARRAY_DEPLOYMENT_ID = bytes([0x44, 0x41, 0x10, 0xA2])
+SOLAR_ARRAY_DEPLOYMENT_ID = bytes([0x44, 0x41, 0x00, 0xA2])
# Power Object IDs
PCDU_HANDLER_ID = bytes([0x44, 0x20, 0x00, 0xA1])
@@ -70,11 +70,6 @@ PL_PCDU_ID = bytes([0x44, 0x30, 0x00, 0x00])
ACS_BOARD_ASS_ID = bytes([0x73, 0x00, 0x00, 0x01])
-class ObjectInfo:
- id: int = 0
- name: str = ""
-
-
def get_object_ids() -> ObjectIdDictT:
global __OBJECT_ID_DICT
if not os.path.exists(DEFAULT_OBJECTS_CSV_PATH):
diff --git a/gomspace/gomspace_common.py b/gomspace/gomspace_common.py
index 38242c9..4130665 100644
--- a/gomspace/gomspace_common.py
+++ b/gomspace/gomspace_common.py
@@ -20,10 +20,21 @@ class GomspaceDeviceActionIds(enum.IntEnum):
WDT_RESET = 9
REQUEST_HK_TABLE = 16
PRINT_SWITCH_V_I = 32
+ PRINT_LATCHUPS = 33
class GomspaceOpCodes(enum.Enum):
- PRINT_SWITCH_V_I = "32"
+ # Request HK
+ REQUEST_HK_ONCE = "128"
+ PRINT_SWITCH_V_I = "129"
+ PRINT_LATCHUPS = "130"
+
+
+class SetIds:
+ PDU_1 = 0x01
+ PDU_2 = 0x02
+ P60_DOCK = 0x03
+ ACU = 0x04
class TableIds:
diff --git a/pus_tc/cmd_definitions.py b/pus_tc/cmd_definitions.py
index 5ea1a2d..3e7c927 100644
--- a/pus_tc/cmd_definitions.py
+++ b/pus_tc/cmd_definitions.py
@@ -187,11 +187,21 @@ def add_pcdu_cmds(cmd_dict: ServiceOpCodeDictT):
keys=P60OpCodes.STACK_5V_OFF.value,
info="P60 Dock: Turn stack 5V off",
)
+ add_op_code_entry(
+ op_code_dict=op_code_dict,
+ keys=GomspaceOpCodes.REQUEST_HK_ONCE.value,
+ info="P60 Dock: Request HK once",
+ )
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_SWITCH_V_I.value,
info="P60 Dock: Print Switches, Voltages, Currents",
)
+ add_op_code_entry(
+ op_code_dict=op_code_dict,
+ keys=GomspaceOpCodes.PRINT_LATCHUPS.value,
+ info="P60 Dock: Print Latchups",
+ )
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name=CustomServiceList.P60DOCK.value,
@@ -200,7 +210,6 @@ def add_pcdu_cmds(cmd_dict: ServiceOpCodeDictT):
)
op_code_dict = dict()
- add_op_code_entry(op_code_dict=op_code_dict, keys="0", info="PDU1 Tests")
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu1OpCodes.TCS_BOARD_ON.value,
@@ -271,11 +280,24 @@ def add_pcdu_cmds(cmd_dict: ServiceOpCodeDictT):
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_HK_ONCE.value,
+ info="PDU1: Request HK once",
+ )
add_op_code_entry(
op_code_dict=op_code_dict,
keys=GomspaceOpCodes.PRINT_SWITCH_V_I.value,
info="PDU1: Print Switches, Voltages, Currents",
)
+ add_op_code_entry(
+ op_code_dict=op_code_dict,
+ keys=GomspaceOpCodes.PRINT_LATCHUPS.value,
+ 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,
@@ -284,53 +306,81 @@ def add_pcdu_cmds(cmd_dict: ServiceOpCodeDictT):
)
op_code_dict = dict()
- add_op_code_entry(
- op_code_dict=op_code_dict,
- keys="0",
- info="PDU2 Tests",
- options={OpCodeDictKeys.TIMEOUT: 2.0},
- )
+ 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",
- options={OpCodeDictKeys.TIMEOUT: 2.0},
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.ACS_SIDE_B_OFF.value,
info="PDU2: Turn ACS Side B off",
- options={OpCodeDictKeys.TIMEOUT: 2.0},
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SUS_REDUNDANT_ON.value,
info="PDU2: Turn SUS redundant on",
- options={OpCodeDictKeys.TIMEOUT: 2.0},
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.SUS_REDUNDANT_OFF.value,
info="PDU2: Turn SUS redundant off",
- options={OpCodeDictKeys.TIMEOUT: 2.0},
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.RW_ON.value,
info="PDU2: Turn reaction wheels on",
- options={OpCodeDictKeys.TIMEOUT: 2.0},
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=Pdu2OpCodes.RW_OFF.value,
info="PDU2: Turn reaction wheels off",
- options={OpCodeDictKeys.TIMEOUT: 2.0},
)
add_op_code_entry(
op_code_dict=op_code_dict,
- keys=Pdu2OpCodes.Q7S_OFF.value,
- info="Q7S Off",
- options={OpCodeDictKeys.TIMEOUT: 2.0},
+ 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=GomspaceOpCodes.REQUEST_HK_ONCE.value,
+ info="PDU2: Request HK once",
)
add_op_code_entry(
op_code_dict=op_code_dict,
@@ -338,7 +388,11 @@ def add_pcdu_cmds(cmd_dict: ServiceOpCodeDictT):
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.value,
+ info="PDU2: Print Latchups",
+ )
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
name="pdu2",
@@ -520,49 +574,52 @@ def add_ploc_cmds(cmd_dict: ServiceOpCodeDictT):
def add_system_cmds(cmd_dict: ServiceOpCodeDictT):
from pus_tc.system.acs import AcsOpCodes
- default_opts = generate_op_code_options(enter_listener_mode=False, custom_timeout=8.0)
+
+ default_opts = generate_op_code_options(
+ enter_listener_mode=False, custom_timeout=8.0
+ )
op_code_dict = dict()
add_op_code_entry(
op_code_dict=op_code_dict,
keys=AcsOpCodes.ACS_ASS_A_SIDE,
info="Switch to ACS board A side",
- options=default_opts
+ options=default_opts,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=AcsOpCodes.ACS_ASS_B_SIDE,
info="Switch to ACS board B side",
- options=default_opts
+ options=default_opts,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=AcsOpCodes.ACS_ASS_DUAL_MODE,
info="Switch to ACS board dual mode",
- options=default_opts
+ options=default_opts,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=AcsOpCodes.ACS_ASS_A_ON,
info="Switch ACS board A side on",
- options=default_opts
+ options=default_opts,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=AcsOpCodes.ACS_ASS_B_ON,
info="Switch ACS board B side on",
- options=default_opts
+ options=default_opts,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=AcsOpCodes.ACS_ASS_DUAL_ON,
info="Switch ACS board dual mode on",
- options=default_opts
+ options=default_opts,
)
add_op_code_entry(
op_code_dict=op_code_dict,
keys=AcsOpCodes.ACS_ASS_OFF,
info="Switch off ACS board",
- options=default_opts
+ options=default_opts,
)
add_service_op_code_entry(
srv_op_code_dict=cmd_dict,
diff --git a/pus_tc/devs/heater.py b/pus_tc/devs/heater.py
index 36de073..e04b5b0 100644
--- a/pus_tc/devs/heater.py
+++ b/pus_tc/devs/heater.py
@@ -29,8 +29,8 @@ class ActionIds:
def pack_heater_test_into(object_id: bytearray, tc_queue: TcQueueT):
tc_queue.appendleft((QueueCommands.PRINT, "Testing Heater Switching"))
- heater_number = int(input("Type number of heater to switch: "))
- if heater_number >= SwitchNumbers.NUMBER_OF_SWITCHES:
+ heater_number = int(input("Type number of heater to switch [0-7]: "))
+ if heater_number >= SwitchNumbers.NUMBER_OF_SWITCHES or heater_number < 0:
print("Invalid heater switch number")
return
action = int(input("Turn switch on or off? (0 - off, 1 - on): "))
@@ -52,7 +52,8 @@ def pack_switch_heater_command(
@param switch_action Action to perform. 0 - Sets switch off, 1 - Sets switch on.
"""
action_id = ActionIds.SWITCH_HEATER
- command = object_id + action_id
+ command = bytearray()
+ command += object_id + action_id
command.append(switch_nr)
command.append(switch_action)
return command
diff --git a/pus_tc/devs/p60dock.py b/pus_tc/devs/p60dock.py
index d4ccdca..e9d08ee 100644
--- a/pus_tc/devs/p60dock.py
+++ b/pus_tc/devs/p60dock.py
@@ -7,7 +7,9 @@
"""
from tmtccmd.config.definitions import QueueCommands
from tmtccmd.tc.packer import TcQueueT
+from tmtccmd.tc.service_3_housekeeping import generate_one_hk_command, make_sid
from gomspace.gomspace_common import *
+from config.object_ids import P60_DOCK_HANDLER
class P60OpCodes(enum.Enum):
@@ -110,6 +112,11 @@ def pack_p60dock_test_into(object_id: bytearray, tc_queue: TcQueueT, op_code: st
Channel.off,
)
tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == GomspaceOpCodes.REQUEST_HK_ONCE.value:
+ tc_queue.appendleft((QueueCommands.PRINT, "P60 Dock: Requesting HK Table Once"))
+ hk_sid = make_sid(object_id=P60_DOCK_HANDLER, set_id=SetIds.P60_DOCK)
+ command = generate_one_hk_command(sid=hk_sid, ssc=0)
+ tc_queue.appendleft(command.pack_command_tuple())
if op_code == GomspaceOpCodes.PRINT_SWITCH_V_I.value:
tc_queue.appendleft(
(QueueCommands.PRINT, "P60 Dock: Print Switches, Voltages, Currents")
@@ -118,7 +125,12 @@ def pack_p60dock_test_into(object_id: bytearray, tc_queue: TcQueueT, op_code: st
object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I
)
tc_queue.appendleft(command.pack_command_tuple())
- return
+ if op_code == GomspaceOpCodes.PRINT_LATCHUPS.value:
+ tc_queue.appendleft((QueueCommands.PRINT, "P60 Dock: Print Latchups"))
+ command = generate_action_command(
+ object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS
+ )
+ tc_queue.appendleft(command.pack_command_tuple())
if P60DockTestProcedure.all or P60DockTestProcedure.reboot:
tc_queue.appendleft((QueueCommands.PRINT, "P60 Dock: Reboot"))
command = pack_reboot_command(object_id)
diff --git a/pus_tc/devs/pdu1.py b/pus_tc/devs/pdu1.py
index 333002d..fd94230 100644
--- a/pus_tc/devs/pdu1.py
+++ b/pus_tc/devs/pdu1.py
@@ -5,27 +5,30 @@
"""
from tmtccmd.config.definitions import QueueCommands
from tmtccmd.tc.packer import TcQueueT
+from tmtccmd.tc.service_3_housekeeping import generate_one_hk_command, make_sid
from gomspace.gomspace_common import *
from gomspace.gomspace_pdu_definitions import *
+from config.object_ids import PDU_1_HANDLER_ID
class Pdu1OpCodes(enum.Enum):
- TESTS = "0"
- TCS_BOARD_ON = "1"
- TCS_BOARD_OFF = "2"
- STAR_TRACKER_ON = "3"
- STAR_TRACKER_OFF = "4"
- SUS_NOMINAL_ON = "5"
- SUS_NOMINAL_OFF = "6"
- ACS_A_SIDE_ON = "7"
- ACS_A_SIDE_OFF = "8"
- SYRLINKS_ON = "9"
- SYRLINKS_OFF = "10"
- MGT_ON = "11"
- MGT_OFF = "12"
+ TCS_BOARD_ON = "0"
+ TCS_BOARD_OFF = "1"
+ STAR_TRACKER_ON = "2"
+ STAR_TRACKER_OFF = "3"
+ SUS_NOMINAL_ON = "4"
+ SUS_NOMINAL_OFF = "5"
+ ACS_A_SIDE_ON = "6"
+ ACS_A_SIDE_OFF = "7"
+ SYRLINKS_ON = "8"
+ SYRLINKS_OFF = "9"
+ MGT_ON = "10"
+ MGT_OFF = "11"
# Solar Cell Experiment
- SCEX_ON = "13"
- SCEX_OFF = "14"
+ SCEX_ON = "12"
+ SCEX_OFF = "13"
+
+ TESTS = "32"
class PDU1TestProcedure:
@@ -53,7 +56,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
command = pack_set_param_command(
object_id,
PDUConfigTable.out_en_0.parameter_address,
- PDUConfigTable.out_en_2.parameter_size,
+ PDUConfigTable.out_en_0.parameter_size,
Channel.on,
)
tc_queue.appendleft(command.pack_command_tuple())
@@ -62,7 +65,7 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
command = pack_set_param_command(
object_id,
PDUConfigTable.out_en_0.parameter_address,
- PDUConfigTable.out_en_2.parameter_size,
+ PDUConfigTable.out_en_0.parameter_size,
Channel.off,
)
tc_queue.appendleft(command.pack_command_tuple())
@@ -151,14 +154,6 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
Channel.off,
)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == GomspaceOpCodes.PRINT_SWITCH_V_I.value:
- tc_queue.appendleft(
- (QueueCommands.PRINT, "PDU1: Print Switches, Voltages, Currents")
- )
- command = generate_action_command(
- object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I
- )
- tc_queue.appendleft(command.pack_command_tuple())
if op_code == Pdu1OpCodes.SYRLINKS_ON.value:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn Syrlinks on"))
command = pack_set_param_command(
@@ -195,6 +190,25 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
Channel.off,
)
tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == GomspaceOpCodes.REQUEST_HK_ONCE.value:
+ tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Requesting HK Table Once"))
+ hk_sid = make_sid(object_id=PDU_1_HANDLER_ID, set_id=SetIds.PDU_1)
+ command = generate_one_hk_command(sid=hk_sid, ssc=0)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == GomspaceOpCodes.PRINT_SWITCH_V_I.value:
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "PDU1: Print Switches, Voltages, Currents")
+ )
+ command = generate_action_command(
+ object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I
+ )
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == GomspaceOpCodes.PRINT_LATCHUPS.value:
+ tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Print Latchups"))
+ command = generate_action_command(
+ object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS
+ )
+ tc_queue.appendleft(command.pack_command_tuple())
if PDU1TestProcedure.all or PDU1TestProcedure.ping:
tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Ping Test"))
ping_data = bytearray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
diff --git a/pus_tc/devs/pdu2.py b/pus_tc/devs/pdu2.py
index 6b2b83c..0b454ed 100644
--- a/pus_tc/devs/pdu2.py
+++ b/pus_tc/devs/pdu2.py
@@ -8,8 +8,10 @@
"""
from tmtccmd.config.definitions import QueueCommands
from tmtccmd.tc.packer import TcQueueT
+from tmtccmd.tc.service_3_housekeeping import generate_one_hk_command, make_sid
from gomspace.gomspace_common import *
from gomspace.gomspace_pdu_definitions import *
+from config.object_ids import PDU_2_HANDLER_ID
class Pdu2OpCodes(enum.Enum):
@@ -19,8 +21,16 @@ class Pdu2OpCodes(enum.Enum):
SUS_REDUNDANT_OFF = "4"
RW_ON = "5"
RW_OFF = "6"
+ PL_PCDU_VBAT_NOM_ON = "7"
+ PL_PCDU_VBAT_NOM_OFF = "8"
+ PL_PCDU_VBAT_RED_ON = "9"
+ PL_PCDU_VBAT_RED_OFF = "10"
+ TCS_HEATER_IN_ON = "11"
+ TCS_HEATER_IN_OFF = "12"
+ SOLAR_ARRAY_DEPL_ON = "13"
+ SOLAR_ARRAY_DEPL_OFF = "14"
# There is not really a point of the on command, the SW can not be commanded if the OBC is off
- Q7S_OFF = "7"
+ Q7S_OFF = "32"
class PDU2TestProcedure:
@@ -118,6 +128,95 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
Channel.off,
)
tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == Pdu2OpCodes.PL_PCDU_VBAT_NOM_ON.value:
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "PDU2: Turn PDU2 PL PCDU Channel 1 on")
+ )
+ command = pack_set_param_command(
+ object_id,
+ PDUConfigTable.out_en_1.parameter_address,
+ PDUConfigTable.out_en_1.parameter_size,
+ Channel.on,
+ )
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == Pdu2OpCodes.PL_PCDU_VBAT_NOM_OFF.value:
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "PDU2: Turn PDU2 PL PCDU Channel 1 off")
+ )
+ command = pack_set_param_command(
+ object_id,
+ PDUConfigTable.out_en_1.parameter_address,
+ PDUConfigTable.out_en_1.parameter_size,
+ Channel.off,
+ )
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == Pdu2OpCodes.PL_PCDU_VBAT_RED_ON.value:
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "PDU2: Turn PDU2 PL PCDU Channel 6 on")
+ )
+ command = pack_set_param_command(
+ object_id,
+ PDUConfigTable.out_en_6.parameter_address,
+ PDUConfigTable.out_en_6.parameter_size,
+ Channel.off,
+ )
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == Pdu2OpCodes.PL_PCDU_VBAT_RED_OFF.value:
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "PDU2: Turn PDU2 PL PCDU Channel 6 off")
+ )
+ command = pack_set_param_command(
+ object_id,
+ PDUConfigTable.out_en_6.parameter_address,
+ PDUConfigTable.out_en_6.parameter_size,
+ Channel.off,
+ )
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == Pdu2OpCodes.TCS_HEATER_IN_ON.value:
+ tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn TCS Heater Input on"))
+ command = pack_set_param_command(
+ object_id,
+ PDUConfigTable.out_en_3.parameter_address,
+ PDUConfigTable.out_en_3.parameter_size,
+ Channel.on,
+ )
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == Pdu2OpCodes.TCS_HEATER_IN_OFF.value:
+ tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Turn TCS Heater Input off"))
+ command = pack_set_param_command(
+ object_id,
+ PDUConfigTable.out_en_3.parameter_address,
+ PDUConfigTable.out_en_3.parameter_size,
+ Channel.off,
+ )
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == Pdu2OpCodes.SOLAR_ARRAY_DEPL_ON.value:
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "PDU2: Turn Solar Array Deployment On")
+ )
+ command = pack_set_param_command(
+ object_id,
+ PDUConfigTable.out_en_5.parameter_address,
+ PDUConfigTable.out_en_5.parameter_size,
+ Channel.on,
+ )
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == Pdu2OpCodes.SOLAR_ARRAY_DEPL_OFF.value:
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "PDU2: Turn Solar Array Deployment Off")
+ )
+ command = pack_set_param_command(
+ object_id,
+ PDUConfigTable.out_en_5.parameter_address,
+ PDUConfigTable.out_en_5.parameter_size,
+ Channel.off,
+ )
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == GomspaceOpCodes.REQUEST_HK_ONCE.value:
+ tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Requesting HK Table Once"))
+ hk_sid = make_sid(object_id=PDU_2_HANDLER_ID, set_id=SetIds.PDU_2)
+ command = generate_one_hk_command(sid=hk_sid, ssc=0)
+ tc_queue.appendleft(command.pack_command_tuple())
if op_code == GomspaceOpCodes.PRINT_SWITCH_V_I.value:
tc_queue.appendleft(
(QueueCommands.PRINT, "PDU2: Print Switches, Currents, Voltahes")
@@ -126,7 +225,12 @@ def pack_pdu2_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_SWITCH_V_I
)
tc_queue.appendleft(command.pack_command_tuple())
-
+ if op_code == GomspaceOpCodes.PRINT_LATCHUPS.value:
+ tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Print Latchups"))
+ command = generate_action_command(
+ object_id=object_id, action_id=GomspaceDeviceActionIds.PRINT_LATCHUPS
+ )
+ tc_queue.appendleft(command.pack_command_tuple())
if PDU2TestProcedure.all or PDU2TestProcedure.reboot:
tc_queue.appendleft((QueueCommands.PRINT, "PDU2: Reboot"))
command = pack_reboot_command(object_id)
diff --git a/pus_tc/devs/plpcdu.py b/pus_tc/devs/plpcdu.py
index b11be7d..9473db8 100644
--- a/pus_tc/devs/plpcdu.py
+++ b/pus_tc/devs/plpcdu.py
@@ -82,14 +82,14 @@ def pack_pl_pcdu_commands(tc_queue: TcQueueT, op_code: str):
tc_queue.appendleft((QueueCommands.PRINT, "Switching PL PCDU on"))
mode_data = pack_mode_data(object_id=PL_PCDU_ID, mode=Modes.ON, submode=0)
mode_cmd = PusTelecommand(
- service=200, subservice=Subservices.SWITCH_MODE, app_data=mode_data
+ service=200, subservice=Subservices.COMMAND_MODE_COMMAND, app_data=mode_data
)
tc_queue.appendleft(mode_cmd.pack_command_tuple())
if op_code in OpCodes.SWITCH_OFF:
tc_queue.appendleft((QueueCommands.PRINT, "Switching PL PCDU off"))
mode_data = pack_mode_data(object_id=PL_PCDU_ID, mode=Modes.OFF, submode=0)
mode_cmd = PusTelecommand(
- service=200, subservice=Subservices.SWITCH_MODE, app_data=mode_data
+ service=200, subservice=Subservices.COMMAND_MODE_COMMAND, app_data=mode_data
)
tc_queue.appendleft(mode_cmd.pack_command_tuple())
if op_code in OpCodes.SWITCH_ADC_NORMAL:
@@ -100,7 +100,7 @@ def pack_pl_pcdu_commands(tc_queue: TcQueueT, op_code: str):
object_id=PL_PCDU_ID, mode=Modes.NORMAL, submode=Submodes.ADC_ON
)
mode_cmd = PusTelecommand(
- service=200, subservice=Subservices.SWITCH_MODE, app_data=mode_data
+ service=200, subservice=Subservices.COMMAND_MODE_COMMAND, app_data=mode_data
)
tc_queue.appendleft(mode_cmd.pack_command_tuple())
if op_code in OpCodes.SWITCH_ALL_NORMAL:
@@ -114,7 +114,7 @@ def pack_pl_pcdu_commands(tc_queue: TcQueueT, op_code: str):
object_id=PL_PCDU_ID, mode=Modes.NORMAL, submode=Submodes.ALL_ON
)
mode_cmd = PusTelecommand(
- service=200, subservice=Subservices.SWITCH_MODE, app_data=mode_data
+ service=200, subservice=Subservices.COMMAND_MODE_COMMAND, app_data=mode_data
)
tc_queue.appendleft(mode_cmd.pack_command_tuple())
if op_code in OpCodes.UPDATE_DRO_TO_X8_WAIT:
diff --git a/pus_tc/system/acs.py b/pus_tc/system/acs.py
index 8b8cc6d..3b97caf 100644
--- a/pus_tc/system/acs.py
+++ b/pus_tc/system/acs.py
@@ -26,32 +26,44 @@ def pack_acs_command(tc_queue: TcQueueT, op_code: str):
tc_queue.appendleft(
(QueueCommands.PRINT, "Switching to ACS board assembly A side")
)
- command_acs_board(mode=Modes.NORMAL, submode=AcsBoardSubmodes.A_SIDE, tc_queue=tc_queue)
+ command_acs_board(
+ mode=Modes.NORMAL, submode=AcsBoardSubmodes.A_SIDE, tc_queue=tc_queue
+ )
if op_code in AcsOpCodes.ACS_ASS_B_SIDE:
tc_queue.appendleft(
(QueueCommands.PRINT, "Switching to ACS board assembly B side")
)
- command_acs_board(mode=Modes.NORMAL, submode=AcsBoardSubmodes.B_SIDE, tc_queue=tc_queue)
+ command_acs_board(
+ mode=Modes.NORMAL, submode=AcsBoardSubmodes.B_SIDE, tc_queue=tc_queue
+ )
if op_code in AcsOpCodes.ACS_ASS_DUAL_MODE:
tc_queue.appendleft(
(QueueCommands.PRINT, "Switching to ACS board assembly dual mode")
)
- command_acs_board(mode=Modes.NORMAL, submode=AcsBoardSubmodes.DUAL_SIDE, tc_queue=tc_queue)
+ command_acs_board(
+ mode=Modes.NORMAL, submode=AcsBoardSubmodes.DUAL_SIDE, tc_queue=tc_queue
+ )
if op_code in AcsOpCodes.ACS_ASS_A_ON:
tc_queue.appendleft(
(QueueCommands.PRINT, "Switching ACS board assembly A side on")
)
- command_acs_board(mode=Modes.ON, submode=AcsBoardSubmodes.A_SIDE, tc_queue=tc_queue)
+ command_acs_board(
+ mode=Modes.ON, submode=AcsBoardSubmodes.A_SIDE, tc_queue=tc_queue
+ )
if op_code in AcsOpCodes.ACS_ASS_B_ON:
tc_queue.appendleft(
(QueueCommands.PRINT, "Switching ACS board assembly B side on")
)
- command_acs_board(mode=Modes.ON, submode=AcsBoardSubmodes.B_SIDE, tc_queue=tc_queue)
+ command_acs_board(
+ mode=Modes.ON, submode=AcsBoardSubmodes.B_SIDE, tc_queue=tc_queue
+ )
if op_code in AcsOpCodes.ACS_ASS_DUAL_ON:
tc_queue.appendleft(
(QueueCommands.PRINT, "Switching ACS board assembly dual side on")
)
- command_acs_board(mode=Modes.ON, submode=AcsBoardSubmodes.B_SIDE, tc_queue=tc_queue)
+ command_acs_board(
+ mode=Modes.ON, submode=AcsBoardSubmodes.B_SIDE, tc_queue=tc_queue
+ )
if op_code in AcsOpCodes.ACS_ASS_OFF:
tc_queue.appendleft(
(QueueCommands.PRINT, "Switching to ACS board assembly off")
diff --git a/pus_tc/system/core.py b/pus_tc/system/core.py
index f98742c..61103f9 100644
--- a/pus_tc/system/core.py
+++ b/pus_tc/system/core.py
@@ -23,7 +23,7 @@ class ActionIds(enum.IntEnum):
class SetIds(enum.IntEnum):
- HK = 5
+ HK = 5
class OpCodes:
diff --git a/pus_tc/tc_packer_hook.py b/pus_tc/tc_packer_hook.py
index 340a8ac..01a253c 100644
--- a/pus_tc/tc_packer_hook.py
+++ b/pus_tc/tc_packer_hook.py
@@ -16,6 +16,7 @@ from pus_tc.devs.pdu2 import pack_pdu2_commands
from pus_tc.devs.pdu1 import pack_pdu1_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.solar_array_deployment import pack_solar_array_deployment_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.ploc_mpsoc import pack_ploc_mpsoc_test_into
@@ -59,6 +60,7 @@ from config.object_ids import (
PDEC_HANDLER_ID,
STR_IMG_HELPER_ID,
SYRLINKS_HANDLER_ID,
+ SOLAR_ARRAY_DEPLOYMENT_ID,
)
@@ -193,6 +195,10 @@ def pack_service_queue_user(
return pack_syrlinks_command(
object_id=SYRLINKS_HANDLER_ID, tc_queue=service_queue, op_code=op_code
)
+ if service == CustomServiceList.SA_DEPLYOMENT.value:
+ return pack_solar_array_deployment_test_into(
+ object_id=SOLAR_ARRAY_DEPLOYMENT_ID, tc_queue=service_queue
+ )
if service == CustomServiceList.PL_PCDU.value:
return pack_pl_pcdu_commands(tc_queue=service_queue, op_code=op_code)
if service == CustomServiceList.ACS_ASS.value:
diff --git a/pus_tm/hk_handling.py b/pus_tm/hk_handling.py
index aab0366..6e23ac0 100644
--- a/pus_tm/hk_handling.py
+++ b/pus_tm/hk_handling.py
@@ -15,7 +15,7 @@ from config.object_ids import (
GPS_HANDLER_0_ID,
GPS_HANDLER_1_ID,
BPX_HANDLER_ID,
- CORE_CONTROLLER_ID
+ CORE_CONTROLLER_ID,
)
LOGGER = get_console_logger()
diff --git a/tmtccmd b/tmtccmd
index 86cf0bf..a317237 160000
--- a/tmtccmd
+++ b/tmtccmd
@@ -1 +1 @@
-Subproject commit 86cf0bf9530f0d31784ff96b025f8b778d1732b1
+Subproject commit a31723786f4d85e82ba8e685f1652cb59cdb707b