diff --git a/config/hook_implementations.py b/config/hook_implementations.py index 15d0831..c3c7663 100644 --- a/config/hook_implementations.py +++ b/config/hook_implementations.py @@ -538,6 +538,7 @@ def get_eive_service_op_code_dict(service_op_code_dict: ServiceOpCodeDictT): "48": ("Star Tracker: Request camera parameter", {OpCodeDictKeys.TIMEOUT: 2.0}), "49": ("Star Tracker: Request limits", {OpCodeDictKeys.TIMEOUT: 2.0}), "50": ("Star Tracker: Request blob parameters", {OpCodeDictKeys.TIMEOUT: 2.0}), + "51": ("Star Tracker: Set image processor parameters", {OpCodeDictKeys.TIMEOUT: 2.0}), } service_star_tracker_tuple = ("Star tracker", op_code_dict_srv_star_tracker) @@ -547,6 +548,10 @@ def get_eive_service_op_code_dict(service_op_code_dict: ServiceOpCodeDictT): "2": ("CCSDS Handler: Enable transmitter", {OpCodeDictKeys.TIMEOUT: 2.0}), "3": ("CCSDS Handler: Disable transmitter", {OpCodeDictKeys.TIMEOUT: 2.0}), "4": ("CCSDS Handler: Set arbitrary bitrate", {OpCodeDictKeys.TIMEOUT: 2.0}), + "5": ("CCSDS Handler: Enable tx clock manipulator", {OpCodeDictKeys.TIMEOUT: 2.0}), + "6": ("CCSDS Handler: Disable tx clock manipulator", {OpCodeDictKeys.TIMEOUT: 2.0}), + "7": ("CCSDS Handler: Update tx data on rising edge", {OpCodeDictKeys.TIMEOUT: 2.0}), + "8": ("CCSDS Handler: Update tx data on falling edge", {OpCodeDictKeys.TIMEOUT: 2.0}), } service_ccsds_handler_tuple = ("CCSDS Handler", op_code_dict_srv_ccsds_handler) diff --git a/pus_tc/ccsds_handler.py b/pus_tc/ccsds_handler.py index 07dea55..acf004f 100644 --- a/pus_tc/ccsds_handler.py +++ b/pus_tc/ccsds_handler.py @@ -14,16 +14,22 @@ from spacepackets.ecss.tc import PusTelecommand class CommandIds: # Configures input rate of syrlinks to 400 Khz (results in downlink rate of 200 kbps) - SET_LOW_RATE = bytearray([0x0, 0x0, 0x0, 0x0]) + SET_LOW_RATE = 0 # Configures input rate of syrlinks to 2000 Khz (results in downlink rate of 1000 kbps) - SET_HIGH_RATE = bytearray([0x0, 0x0, 0x0, 0x1]) + SET_HIGH_RATE = 1 # Enables the syrlinks transmitter (by using RS485 enables lines) - EN_TRANSMITTER = bytearray([0x0, 0x0, 0x0, 0x2]) + EN_TRANSMITTER = 2 # Disables the syrlinks transmitter (by using RS485 enables lines) - DIS_TRANSMITTER = bytearray([0x0, 0x0, 0x0, 0x3]) + DIS_TRANSMITTER = 3 # Sets an arbitrary bitrate. Normally only set low and set high rate commands should be # required - ARBITRARY_BITRATE = bytearray([0x0, 0x0, 0x0, 0x4]) + ARBITRARY_BITRATE = 4 + ENABLE_TX_CLK_MANIPULATOR = 5 + DISABLE_TX_CLK_MANIPULATOR = 6 + # Tx data will be updated on rising edge of tx clock + UPDATE_ON_RISING_EDGE = 7 + # Tx data will be updated on falling edge of tx clock + UPDATE_ON_FALLING_EDGE = 8 def pack_ccsds_handler_test( @@ -37,26 +43,22 @@ def pack_ccsds_handler_test( ) if op_code == "0": tc_queue.appendleft((QueueCommands.PRINT, "CCSDS Handler: Set low rate")) - command = object_id + CommandIds.SET_LOW_RATE + command = object_id + struct.pack('!I', CommandIds.SET_LOW_RATE) command = PusTelecommand(service=8, subservice=128, ssc=20, app_data=command) tc_queue.appendleft(command.pack_command_tuple()) if op_code == "1": tc_queue.appendleft((QueueCommands.PRINT, "CCSDS Handler: Set high rate")) - command = object_id + CommandIds.SET_HIGH_RATE + command = object_id + struct.pack('!I', CommandIds.SET_HIGH_RATE) command = PusTelecommand(service=8, subservice=128, ssc=21, app_data=command) tc_queue.appendleft(command.pack_command_tuple()) if op_code == "2": - tc_queue.appendleft( - (QueueCommands.PRINT, "CCSDS Handler: Enables the transmitter") - ) - command = object_id + CommandIds.EN_TRANSMITTER + tc_queue.appendleft((QueueCommands.PRINT, "CCSDS Handler: Enables the transmitter")) + command = object_id + struct.pack('!I', CommandIds.EN_TRANSMITTER) command = PusTelecommand(service=8, subservice=128, ssc=22, app_data=command) tc_queue.appendleft(command.pack_command_tuple()) if op_code == "3": - tc_queue.appendleft( - (QueueCommands.PRINT, "CCSDS Handler: Disables the transmitter") - ) - command = object_id + CommandIds.DIS_TRANSMITTER + tc_queue.appendleft((QueueCommands.PRINT, "CCSDS Handler: Disables the transmitter")) + command = object_id + struct.pack('!I', CommandIds.DIS_TRANSMITTER) command = PusTelecommand(service=8, subservice=128, ssc=23, app_data=command) tc_queue.appendleft(command.pack_command_tuple()) if op_code == "4": @@ -64,7 +66,27 @@ def pack_ccsds_handler_test( (QueueCommands.PRINT, "CCSDS Handler: Set arbitrary bitrate") ) bitrate = int(input("Specify bit rate (bps): ")) - command = object_id + CommandIds.ARBITRARY_BITRATE + struct.pack("!I", bitrate) + command = object_id + struct.pack('!I', CommandIds.ARBITRARY_BITRATE) + struct.pack('!I', bitrate) + command = PusTelecommand(service=8, subservice=128, ssc=24, app_data=command) + tc_queue.appendleft(command.pack_command_tuple()) + if op_code == "5": + tc_queue.appendleft((QueueCommands.PRINT, "CCSDS Handler: Enable tx clock manipulator")) + command = object_id + struct.pack('!I', CommandIds.ENABLE_TX_CLK_MANIPULATOR) + command = PusTelecommand(service=8, subservice=128, ssc=24, app_data=command) + tc_queue.appendleft(command.pack_command_tuple()) + if op_code == "6": + tc_queue.appendleft((QueueCommands.PRINT, "CCSDS Handler: Disable tx clock manipulator")) + command = object_id + struct.pack('!I', CommandIds.DISABLE_TX_CLK_MANIPULATOR) + command = PusTelecommand(service=8, subservice=128, ssc=24, app_data=command) + tc_queue.appendleft(command.pack_command_tuple()) + if op_code == "7": + tc_queue.appendleft((QueueCommands.PRINT, "CCSDS Handler: Update tx data on rising edge of tx clock")) + command = object_id + struct.pack('!I', CommandIds.UPDATE_ON_RISING_EDGE) + command = PusTelecommand(service=8, subservice=128, ssc=24, app_data=command) + tc_queue.appendleft(command.pack_command_tuple()) + if op_code == "8": + tc_queue.appendleft((QueueCommands.PRINT, "CCSDS Handler: Update tx data on falling edge of tx clock")) + command = object_id + struct.pack('!I', CommandIds.UPDATE_ON_FALLING_EDGE) command = PusTelecommand(service=8, subservice=128, ssc=24, app_data=command) tc_queue.appendleft(command.pack_command_tuple()) diff --git a/pus_tc/star_tracker.py b/pus_tc/star_tracker.py index 742fc56..8112271 100644 --- a/pus_tc/star_tracker.py +++ b/pus_tc/star_tracker.py @@ -29,6 +29,7 @@ class StarTrackerActionIds: DOWNLOAD_CENTROID = 16 UPLOAD_CENTROID = 17 SUBSCRIBE_TO_TM = 18 + IMAGE_PROCESSOR = 19 REQ_SOLUTION = 24 REQ_TEMPERATURE = 25 REQ_HISTOGRAM = 28 @@ -499,6 +500,12 @@ def pack_star_tracker_commands( command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_BLOB_PARAMS) command = PusTelecommand(service=8, subservice=128, ssc=73, app_data=command) tc_queue.appendleft(command.pack_command_tuple()) + if op_code == "51": + tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Set image processor parameters")) + command = object_id + struct.pack('!I', StarTrackerActionIds.IMAGE_PROCESSOR) + \ + bytearray(ImagePathDefs.jsonFile, 'utf-8') + command = PusTelecommand(service=8, subservice=128, ssc=70, app_data=command) + tc_queue.appendleft(command.pack_command_tuple()) def pack_write_command(object_id: bytearray) -> bytearray: diff --git a/spacepackets b/spacepackets index 3265de6..0039a0e 160000 --- a/spacepackets +++ b/spacepackets @@ -1 +1 @@ -Subproject commit 3265de69717e2f718f4c740d77a823f9811f8348 +Subproject commit 0039a0ec67217765b9dabfbc35dcb34b6ff81c08 diff --git a/tmtccmd b/tmtccmd index 7b8b936..bfa459c 160000 --- a/tmtccmd +++ b/tmtccmd @@ -1 +1 @@ -Subproject commit 7b8b936f0d18fdbd375da92d43ecdd37d71ded57 +Subproject commit bfa459ccc3c7189a77374a68f0217d448525b34b