diff --git a/.idea/runConfigurations/Star_Tracker.xml b/.idea/runConfigurations/Star_Tracker.xml
index bb2cf5e..c3ced42 100644
--- a/.idea/runConfigurations/Star_Tracker.xml
+++ b/.idea/runConfigurations/Star_Tracker.xml
@@ -6,7 +6,7 @@
-
+
diff --git a/config/hook_implementations.py b/config/hook_implementations.py
index 9fa73ef..cd730d3 100644
--- a/config/hook_implementations.py
+++ b/config/hook_implementations.py
@@ -302,76 +302,130 @@ def get_eive_service_op_code_dict(service_op_code_dict: ServiceOpCodeDictT):
service_ploc_updater_tuple = ("Ploc Updater", op_code_dict_srv_ploc_updater)
op_code_dict_srv_star_tracker = {
- "0": ("Star Tracker: Mode On", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "1": ("Star Tracker: Mode Normal", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "2": ("Star Tracker: Mode Off", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "3": ("Star Tracker: Mode Raw", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "4": ("Star Tracker: Ping", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "5": (
+ "0": (
+ "Star Tracker: Mode On, Submode Bootloader",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "1": ("Star Tracker: Mode On, Submode Firmware", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "2": ("Star Tracker: Mode Normal", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "3": ("Star Tracker: Mode Off", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "4": ("Star Tracker: Mode Raw", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "5": ("Star Tracker: Ping", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "6": (
"Star Tracker: Switch to bootloader program",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
- "6": ("Star Tracker: Request temperature", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "7": ("Star Tracker: Request version", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "8": ("Star Tracker: Request interface", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "9": ("Star Tracker: Request power", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "10": ("Star Tracker: Subscribe to telemetry", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "7": ("Star Tracker: Request temperature", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "8": ("Star Tracker: Request version", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "9": ("Star Tracker: Request interface", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "10": ("Star Tracker: Request power", {OpCodeDictKeys.TIMEOUT: 2.0}),
"11": (
+ "Star Tracker: Set subscription parameters",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "12": (
"Star Tracker: Boot image (requires bootloader mode)",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
- "12": ("Star Tracker: Request time", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "13": ("Star Tracker: Request solution", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "14": ("Star Tracker: Upload image", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "15": ("Star Tracker: Download image", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "16": ("Star Tracker: Limits", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "17": ("Star Tracker: Tracking", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "18": ("Star Tracker: Mounting", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "19": ("Star Tracker: Camera", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "20": ("Star Tracker: Blob", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "21": ("Star Tracker: Centroiding", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "22": ("Star Tracker: LISA", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "23": ("Star Tracker: Matching", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "24": ("Star Tracker: Validation", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "25": ("Star Tracker: Algo", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "26": ("Star Tracker: Take image", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "27": ("Star Tracker: Stop str helper", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "28": ("Star Tracker: Reset error signal", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "29": (
+ "13": ("Star Tracker: Request time", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "14": ("Star Tracker: Request solution", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "15": ("Star Tracker: Upload image", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "16": ("Star Tracker: Download image", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "17": ("Star Tracker: Set limit parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "18": ("Star Tracker: Set tracking parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "19": ("Star Tracker: Set mounting parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "20": ("Star Tracker: Set camera parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "22": (
+ "Star Tracker: Set centroiding parameters",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "23": ("Star Tracker: Set LISA parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "24": ("Star Tracker: Set matching parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "25": (
+ "Star Tracker: Set validation parameters",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "26": ("Star Tracker: Set algo parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "27": ("Star Tracker: Take image", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "28": ("Star Tracker: Stop str helper", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "30": (
"Star Tracker: Set name of download image",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
- "30": ("Star Tracker: Request histogram", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "31": ("Star Tracker: Request contrast", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "32": ("Star Tracker: Set json filename", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "33": ("Star Tracker: Write", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "34": ("Star Tracker: Read", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "35": ("Star Tracker: Set Read filename", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "36": ("Star Tracker: Get checksum", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "37": ("Star Tracker: Set time", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "38": ("Star Tracker: Download centroid", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "39": (
- "Star Tracker: Upload centroid (not implemented?)",
- {OpCodeDictKeys.TIMEOUT: 2.0},
- ),
- "40": ("Star Tracker: Download matched star", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "41": ("Star Tracker: Download DB Image", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "42": ("Star Tracker: Download Blob Pixel", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "43": ("Star Tracker: Download FPGA Image", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "44": (
- "Star Tracker: Change download FPGA image name",
- {OpCodeDictKeys.TIMEOUT: 2.0},
- ),
- "45": ("Star Tracker: Upload FPGA image", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "46": ("Star Tracker: FPGA action", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "47": ("Star Tracker: Unlock", {OpCodeDictKeys.TIMEOUT: 2.0}),
- "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}),
+ "31": ("Star Tracker: Request histogram", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "32": ("Star Tracker: Request contrast", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "33": ("Star Tracker: Set json filename", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "35": ("Star Tracker: Flash read", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "36": ("Star Tracker: Set flash read filename", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "37": ("Star Tracker: Get checksum", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "49": ("Star Tracker: Request camera parameter", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "50": ("Star Tracker: Request limits", {OpCodeDictKeys.TIMEOUT: 2.0}),
"51": (
"Star Tracker: Set image processor parameters",
{OpCodeDictKeys.TIMEOUT: 2.0},
),
+ "52": (
+ "Star Tracker: (EGSE only) Load camera ground config ",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "53": (
+ "Star Tracker: (EGSE only) Load camera flight config",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "54": (
+ "Star Tracker: Request log level parameters",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "55": (
+ "Star Tracker: Request mounting parameters",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "56": (
+ "Star Tracker: Request image processor parameters",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "57": (
+ "Star Tracker: Request centroiding parameters",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "58": ("Star Tracker: Request lisa parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "59": (
+ "Star Tracker: Request matching parameters",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "60": (
+ "Star Tracker: Request tracking parameters",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "61": (
+ "Star Tracker: Request validation parameters",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "62": ("Star Tracker: Request algo parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "63": (
+ "Star Tracker: Request subscription parameters",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "64": (
+ "Star Tracker: Request log subscription parameters",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "65": (
+ "Star Tracker: Request debug camera parameters",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "66": ("Star Tracker: Set log level parameters", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "67": (
+ "Star Tracker: Set log subscription parameters",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "68": (
+ "Star Tracker: Set debug camera parameters",
+ {OpCodeDictKeys.TIMEOUT: 2.0},
+ ),
+ "69": ("Star Tracker: Firmware update", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "70": ("Star Tracker: Disable timestamp generation", {OpCodeDictKeys.TIMEOUT: 2.0}),
+ "71": ("Star Tracker: Enable timestamp generation", {OpCodeDictKeys.TIMEOUT: 2.0}),
}
service_star_tracker_tuple = ("Star tracker", op_code_dict_srv_star_tracker)
diff --git a/pus_tc/pdu1.py b/pus_tc/pdu1.py
index 95419f6..1df00fe 100644
--- a/pus_tc/pdu1.py
+++ b/pus_tc/pdu1.py
@@ -134,7 +134,9 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == Pdu1OpCodes.SCEX_ON.value:
- tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn Solar Cell Experiment on"))
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "PDU1: Turn Solar Cell Experiment on")
+ )
command = pack_set_param_command(
object_id,
PDUConfigTable.out_en_5.parameter_address,
@@ -143,7 +145,9 @@ def pack_pdu1_commands(object_id: bytearray, tc_queue: TcQueueT, op_code: str):
)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == Pdu1OpCodes.SCEX_OFF.value:
- tc_queue.appendleft((QueueCommands.PRINT, "PDU1: Turn Solar Cell Experiment off"))
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "PDU1: Turn Solar Cell Experiment off")
+ )
command = pack_set_param_command(
object_id,
PDUConfigTable.out_en_5.parameter_address,
diff --git a/pus_tc/star_tracker.py b/pus_tc/star_tracker.py
index 148d4a6..42b7dbf 100644
--- a/pus_tc/star_tracker.py
+++ b/pus_tc/star_tracker.py
@@ -11,7 +11,11 @@ from tmtccmd.config.definitions import QueueCommands
from tmtccmd.tc.packer import TcQueueT
from spacepackets.ecss.tc import PusTelecommand
-from pus_tc.service_200_mode import pack_mode_data
+from tmtccmd.tc.service_200_mode import pack_mode_data, Modes
+from tmtccmd.utility.logger import get_console_logger
+from utility.input_helper import InputHelper
+
+LOGGER = get_console_logger()
class StarTrackerActionIds:
@@ -28,7 +32,7 @@ class StarTrackerActionIds:
UPLOAD_IMAGE = 10
DOWNLOAD_CENTROID = 16
UPLOAD_CENTROID = 17
- SUBSCRIBE_TO_TM = 18
+ SUBSCRIPTION = 18
IMAGE_PROCESSOR = 19
REQ_SOLUTION = 24
REQ_TEMPERATURE = 25
@@ -45,14 +49,14 @@ class StarTrackerActionIds:
VALIDATION = 48
ALGO = 49
CHECKSUM = 50
- READ = 51
- WRITE = 52
+ FLASH_READ = 51
+ FLASH_WRITE = 52
DOWNLOAD_MATCHED_STAR = 53
STOP_STR_HELPER = 55
RESET_ERROR = 56
CHANGE_DOWNLOAD_IMAGE = 57
SET_JSON_FILE_NAME = 58
- SET_READ_FILENAME = 59
+ SET_FLASH_READ_FILENAME = 59
SET_TIME = 60
DOWNLOAD_DBIMAGE = 61
DOWNLOAD_BLOBPIXEL = 62
@@ -62,35 +66,80 @@ class StarTrackerActionIds:
FPGA_ACTION = 66
REQ_CAMERA_PARAMS = 67
REQ_LIMITS = 68
- REQ_BLOB_PARAMS = 69
+ REQ_LOG_LEVEL = 69
+ REQ_MOUNTING = 70
+ REQ_IMAGE_PROCESSOR = 71
+ REQ_CENTROIDING = 72
+ REQ_LISA = 73
+ REQ_MATCHING = 74
+ REQ_TRACKING = 75
+ REQ_VALIDATION = 76
+ REQ_ALGO = 77
+ REQ_SUBSCRIPTION = 78
+ REQ_LOG_SUBSCRIPTION = 79
+ REQ_DEBUG_CAMERA = 80
+ LOGLEVEL = 81
+ LOG_SUBSCRIPTION = 82
+ DEBUG_CAMERA = 83
+ FIRMWARE_UPDATE = 84
-class ImagePathDefs:
- uploadFile = "/mnt/sd0/startracker/gemma.bin"
- downloadFile = "test_image.bin"
- downloadPath = "/mnt/sd0/startracker"
- jsonFile = "/mnt/sd0/startracker/full.json"
- flashFile = "/mnt/sd0/startracker/flash.bin"
- flashReadPath = "/mnt/sd0/startracker"
- uploadCentroidJson = "/mnt/sd0/startracker/upload-centroid.json"
- downloadFpgaImagePath = "/mnt/sd0/startracker"
- downloadFpgaImageName = "testname"
- uploadFpgaImageName = "/mnt/sd0/startracker/fpga-image.bin"
+class FileDefs:
+ download_path = "/mnt/sd0/startracker"
+ json_file = "/mnt/sd0/startracker/full.json"
+ egse_ground_config = "/home/pi/arcsec/json/ground-config.json"
+ egse_flight_config = "/home/pi/arcsec/json/flight-config.json"
+ egse_solution_upload_img_config = "/home/pi/arcsec/json/upload-image-solution.json"
+ egse_histogram_upload_img_config = (
+ "/home/pi/arcsec/json/upload-image-histogram.json"
+ )
+ q7s_ground_config = "/mnt/sd0/startracker/json/ground-config.json"
+ q7s_flight_config = "/mnt/sd0/startracker/flight-config.json"
-class Region:
+json_dict = {
+ "1": ["Q7S flight config", FileDefs.q7s_flight_config],
+ "2": ["Q7S ground config", FileDefs.q7s_ground_config],
+ "3": ["EGSE flight config", FileDefs.egse_flight_config],
+ "4": ["EGSE ground config", FileDefs.egse_ground_config],
+ "5": [
+ "EGSE get solution, upload image config",
+ FileDefs.egse_solution_upload_img_config,
+ ],
+ "6": [
+ "EGSE get histogram, upload image config",
+ FileDefs.egse_solution_upload_img_config,
+ ],
+}
+
+firmware_dict = {
+ "1": ["Firmware Major = 2, Minor = 1", FileDefs.firmware2_1],
+ "2": ["Firmware Major = 22, Minor = 1", FileDefs.firmware22_1],
+ "3": ["Firmware Origin", FileDefs.firmware_origin],
+}
+
+upload_image_dict = {
+ "1": ["q7s gemma", "/mnt/sd0/startracker/gemma.bin"],
+ "2": ["egse gemma", "/home/pi/arcsec/star-images/gemma.bin"],
+ "3": ["q7s polaris", "/mnt/sd0/startracker/polaris.bin"],
+ "4": ["egse polaris", "/home/pi/arcsec/star-images/polaris.bin"],
+}
+
+
+class StartRegion:
# Definition according to datasheet (which turned out to be partially faulty)
BOOTLOADER = 0
STAR_TRACKER_FIRMWARE = 1
- FREE_1 = 2
- FREE_2 = 3
class PartitionSize:
- BOOTLOADER = 128000
- STAR_TRACKER_FIRMWARE = 896000
- FREE_1 = 128000
- FREE_2 = 896000
+ # Size of most recent firmware image
+ STAR_TRACKER_FIRMWARE = 464572
+
+
+class Submode:
+ BOOTLOADER = 1
+ FIRMWARE = 2
def pack_star_tracker_commands(
@@ -104,31 +153,40 @@ def pack_star_tracker_commands(
)
if op_code == "0":
- tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Mode On"))
- command = pack_mode_data(object_id, 1, 0)
- command = PusTelecommand(service=200, subservice=1, ssc=10, app_data=command)
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Mode On, Submode Bootloader")
+ )
+ command = pack_mode_data(object_id, Modes.ON, Submode.BOOTLOADER)
+ command = PusTelecommand(service=200, subservice=1, ssc=9, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "1":
- tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Mode Normal"))
- command = pack_mode_data(object_id, 2, 0)
- command = PusTelecommand(service=200, subservice=1, ssc=11, app_data=command)
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Mode On, Submode Firmware")
+ )
+ command = pack_mode_data(object_id, Modes.ON, Submode.FIRMWARE)
+ command = PusTelecommand(service=200, subservice=1, ssc=10, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "2":
- tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Mode Off"))
- command = pack_mode_data(object_id, 0, 0)
- command = PusTelecommand(service=200, subservice=1, ssc=12, app_data=command)
+ tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Mode Normal"))
+ command = pack_mode_data(object_id, Modes.NORMAL, 0)
+ command = PusTelecommand(service=200, subservice=1, ssc=11, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
if op_code == "3":
+ tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Mode Off"))
+ command = pack_mode_data(object_id, Modes.OFF, 0)
+ command = PusTelecommand(service=200, subservice=1, ssc=12, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "4":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Mode Raw"))
command = pack_mode_data(object_id, 3, 0)
command = PusTelecommand(service=200, subservice=1, ssc=13, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "4":
+ if op_code == "5":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Ping"))
command = object_id + struct.pack("!I", StarTrackerActionIds.PING)
command = PusTelecommand(service=8, subservice=128, ssc=30, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "5":
+ if op_code == "6":
tc_queue.appendleft(
(QueueCommands.PRINT, "Star tracker: Switch to bootloader program")
)
@@ -137,166 +195,170 @@ def pack_star_tracker_commands(
)
command = PusTelecommand(service=8, subservice=128, ssc=31, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "6":
+ if op_code == "7":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Temperature request"))
command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_TEMPERATURE)
command = PusTelecommand(service=8, subservice=128, ssc=32, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "7":
+ if op_code == "8":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Request version"))
command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_VERSION)
command = PusTelecommand(service=8, subservice=128, ssc=33, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "8":
+ if op_code == "9":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Request interface"))
command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_INTERFACE)
command = PusTelecommand(service=8, subservice=128, ssc=34, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "9":
+ if op_code == "10":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Request power"))
command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_POWER)
command = PusTelecommand(service=8, subservice=128, ssc=35, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "10":
+ if op_code == "11":
tc_queue.appendleft(
- (QueueCommands.PRINT, "Star tracker: Subscribe to telemetry")
+ (QueueCommands.PRINT, "Star tracker: Set subscription parameters")
)
- tm_id = int(input("Specify Id of tm: "))
+ json_file = get_config_file()
command = (
object_id
- + struct.pack("!I", StarTrackerActionIds.SUBSCRIBE_TO_TM)
- + struct.pack("B", tm_id)
+ + struct.pack("!I", StarTrackerActionIds.SUBSCRIPTION)
+ + bytearray(json_file, "utf-8")
)
command = PusTelecommand(service=8, subservice=128, ssc=36, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "11":
+ if op_code == "12":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Boot"))
command = object_id + struct.pack("!I", StarTrackerActionIds.BOOT)
command = PusTelecommand(service=8, subservice=128, ssc=37, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "12":
+ if op_code == "13":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Request time"))
command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_TIME)
command = PusTelecommand(service=8, subservice=128, ssc=38, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "13":
+ if op_code == "14":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Request solution"))
command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_SOLUTION)
command = PusTelecommand(service=8, subservice=128, ssc=39, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "14":
+ if op_code == "15":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Upload image"))
+ image = get_upload_image()
command = (
object_id
+ struct.pack("!I", StarTrackerActionIds.UPLOAD_IMAGE)
- + bytearray(ImagePathDefs.uploadFile, "utf-8")
+ + bytearray(image, "utf-8")
)
command = PusTelecommand(service=8, subservice=128, ssc=40, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "15":
+ if op_code == "16":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Download image"))
+ path = input("Specify storage location (default - /mnt/sd0/startracker): ")
+ if not path:
+ path = FileDefs.download_path
command = (
object_id
+ struct.pack("!I", StarTrackerActionIds.DOWNLOAD_IMAGE)
- + bytearray(ImagePathDefs.downloadPath, "utf-8")
+ + bytearray(path, "utf-8")
)
command = PusTelecommand(service=8, subservice=128, ssc=53, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "16":
+ if op_code == "17":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Set limits"))
+ json_file = get_config_file()
command = (
object_id
+ struct.pack("!I", StarTrackerActionIds.LIMITS)
- + bytearray(ImagePathDefs.jsonFile, "utf-8")
+ + bytearray(json_file, "utf-8")
)
command = PusTelecommand(service=8, subservice=128, ssc=42, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "17":
+ if op_code == "18":
tc_queue.appendleft(
(QueueCommands.PRINT, "Star tracker: Set tracking parameters")
)
+ json_file = get_config_file()
command = (
object_id
+ struct.pack("!I", StarTrackerActionIds.TRACKING)
- + bytearray(ImagePathDefs.jsonFile, "utf-8")
+ + bytearray(json_file, "utf-8")
)
command = PusTelecommand(service=8, subservice=128, ssc=43, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "18":
+ if op_code == "19":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Mounting"))
+ json_file = get_config_file()
command = (
object_id
+ struct.pack("!I", StarTrackerActionIds.MOUNTING)
- + bytearray(ImagePathDefs.jsonFile, "utf-8")
+ + bytearray(json_file, "utf-8")
)
command = PusTelecommand(service=8, subservice=128, ssc=44, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "19":
+ if op_code == "20":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Camera"))
+ json_file = get_config_file()
command = (
object_id
+ struct.pack("!I", StarTrackerActionIds.CAMERA)
- + bytearray(ImagePathDefs.jsonFile, "utf-8")
+ + bytearray(json_file, "utf-8")
)
command = PusTelecommand(service=8, subservice=128, ssc=45, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "20":
- tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Blob"))
- command = (
- object_id
- + struct.pack("!I", StarTrackerActionIds.BLOB)
- + bytearray(ImagePathDefs.jsonFile, "utf-8")
- )
- command = PusTelecommand(service=8, subservice=128, ssc=46, app_data=command)
- tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "21":
+ if op_code == "22":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Centroiding"))
+ json_file = get_config_file()
command = (
object_id
+ struct.pack("!I", StarTrackerActionIds.CENTROIDING)
- + bytearray(ImagePathDefs.jsonFile, "utf-8")
+ + bytearray(json_file, "utf-8")
)
command = PusTelecommand(service=8, subservice=128, ssc=47, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "22":
+ if op_code == "23":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: LISA"))
+ json_file = get_config_file()
command = (
object_id
+ struct.pack("!I", StarTrackerActionIds.LISA)
- + bytearray(ImagePathDefs.jsonFile, "utf-8")
+ + bytearray(json_file, "utf-8")
)
command = PusTelecommand(service=8, subservice=128, ssc=48, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "23":
+ if op_code == "24":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Matching"))
+ json_file = get_config_file()
command = (
object_id
+ struct.pack("!I", StarTrackerActionIds.MATCHING)
- + bytearray(ImagePathDefs.jsonFile, "utf-8")
+ + bytearray(json_file, "utf-8")
)
command = PusTelecommand(service=8, subservice=128, ssc=49, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "24":
+ if op_code == "25":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Validation"))
+ json_file = get_config_file()
command = (
object_id
+ struct.pack("!I", StarTrackerActionIds.VALIDATION)
- + bytearray(ImagePathDefs.jsonFile, "utf-8")
+ + bytearray(json_file, "utf-8")
)
command = PusTelecommand(service=8, subservice=128, ssc=50, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "25":
+ if op_code == "26":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Algo"))
+ json_file = get_config_file()
command = (
object_id
+ struct.pack("!I", StarTrackerActionIds.ALGO)
- + bytearray(ImagePathDefs.jsonFile, "utf-8")
+ + bytearray(json_file, "utf-8")
)
command = PusTelecommand(service=8, subservice=128, ssc=51, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "26":
+ if op_code == "27":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Take image"))
- actionid = int(input("Specify parameter ID (nominal - 4): "))
+ actionid = int(input("Specify parameter ID (take image - 4): "))
command = (
object_id
+ struct.pack("!I", StarTrackerActionIds.TAKE_IMAGE)
@@ -304,17 +366,12 @@ def pack_star_tracker_commands(
)
command = PusTelecommand(service=8, subservice=128, ssc=52, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "27":
+ if op_code == "28":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Stop str helper"))
command = object_id + struct.pack("!I", StarTrackerActionIds.STOP_STR_HELPER)
command = PusTelecommand(service=8, subservice=128, ssc=54, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "28":
- tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Reset error signal"))
- command = object_id + struct.pack("!I", StarTrackerActionIds.RESET_ERROR)
- command = PusTelecommand(service=8, subservice=128, ssc=54, app_data=command)
- tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "29":
+ if op_code == "30":
tc_queue.appendleft(
(QueueCommands.PRINT, "Star tracker: Set name of download image")
)
@@ -326,51 +383,49 @@ def pack_star_tracker_commands(
)
command = PusTelecommand(service=8, subservice=128, ssc=54, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "30":
+ if op_code == "31":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Request histogram"))
command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_HISTOGRAM)
command = PusTelecommand(service=8, subservice=128, ssc=55, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "31":
+ if op_code == "32":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Request contrast"))
command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_CONTRAST)
command = PusTelecommand(service=8, subservice=128, ssc=56, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "32":
+ if op_code == "33":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Set json filename"))
+ json_file = get_config_file()
command = (
object_id
+ struct.pack("!I", StarTrackerActionIds.SET_JSON_FILE_NAME)
- + bytearray(ImagePathDefs.jsonFile, "utf-8")
+ + bytearray(json_file, "utf-8")
)
command = PusTelecommand(service=8, subservice=128, ssc=57, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "33":
- tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Write"))
- command = pack_write_command(object_id)
- command = PusTelecommand(service=8, subservice=128, ssc=58, app_data=command)
- tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "34":
- tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Read"))
+ if op_code == "35":
+ tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Flash read"))
command = pack_read_command(object_id)
command = PusTelecommand(service=8, subservice=128, ssc=59, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "35":
- tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Set read filename"))
+ if op_code == "36":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Set flash read filename")
+ )
filename = input("Specify filename: ")
command = (
object_id
- + StarTrackerActionIds.SET_READ_FILENAME
+ + struct.pack("!I", StarTrackerActionIds.SET_FLASH_READ_FILENAME)
+ bytearray(filename, "utf-8")
)
command = PusTelecommand(service=8, subservice=128, ssc=60, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "36":
+ if op_code == "37":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Get checksum"))
command = pack_checksum_command(object_id)
command = PusTelecommand(service=8, subservice=128, ssc=61, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "37":
+ if op_code == "38":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Set time"))
unix_time = 1640783543
command = (
@@ -380,7 +435,7 @@ def pack_star_tracker_commands(
)
command = PusTelecommand(service=8, subservice=128, ssc=61, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "38":
+ if op_code == "39":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Download Centroid"))
id = 0
command = (
@@ -390,16 +445,7 @@ def pack_star_tracker_commands(
)
command = PusTelecommand(service=8, subservice=128, ssc=62, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "39":
- tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Upload Centroid"))
- command = (
- object_id
- + struct.pack("!I", StarTrackerActionIds.UPLOAD_CENTROID)
- + bytearray(ImagePathDefs.uploadCentroidJson, "utf-8")
- )
- command = PusTelecommand(service=8, subservice=128, ssc=63, app_data=command)
- tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "40":
+ if op_code == "41":
tc_queue.appendleft(
(QueueCommands.PRINT, "Star tracker: Download matched star")
)
@@ -411,7 +457,7 @@ def pack_star_tracker_commands(
)
command = PusTelecommand(service=8, subservice=128, ssc=64, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "41":
+ if op_code == "42":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Download DB Image"))
id = 0
command = (
@@ -421,7 +467,7 @@ def pack_star_tracker_commands(
)
command = PusTelecommand(service=8, subservice=128, ssc=65, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "42":
+ if op_code == "43":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Download Blob Pixel"))
id = 0
type = 1 # 0 - normal, 1 - fast
@@ -433,7 +479,7 @@ def pack_star_tracker_commands(
)
command = PusTelecommand(service=8, subservice=128, ssc=65, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "43":
+ if op_code == "44":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Download FPGA Image"))
position = int(input("Start position: "))
length = int(input("Size to download: "))
@@ -442,31 +488,31 @@ def pack_star_tracker_commands(
+ struct.pack("!I", StarTrackerActionIds.DOWNLOAD_FPGA_IMAGE)
+ struct.pack("!I", position)
+ struct.pack("!I", length)
- + bytearray(ImagePathDefs.downloadFpgaImagePath, "utf-8")
+ + bytearray(FileDefs.downloadFpgaImagePath, "utf-8")
)
command = PusTelecommand(service=8, subservice=128, ssc=66, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "44":
+ if op_code == "45":
tc_queue.appendleft(
(QueueCommands.PRINT, "Star tracker: Change donwload FPGA image file name")
)
command = (
object_id
+ struct.pack("!I", StarTrackerActionIds.CHANGE_FPGA_DOWNLOAD_FILE)
- + bytearray(ImagePathDefs.downloadFpgaImageName, "utf-8")
+ + bytearray(FileDefs.downloadFpgaImageName, "utf-8")
)
command = PusTelecommand(service=8, subservice=128, ssc=67, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "45":
+ if op_code == "46":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Upload FPGA image"))
command = (
object_id
+ struct.pack("!I", StarTrackerActionIds.UPLOAD_FPGA_IMAGE)
- + bytearray(ImagePathDefs.uploadFpgaImageName, "utf-8")
+ + bytearray(FileDefs.uploadFpgaImageName, "utf-8")
)
command = PusTelecommand(service=8, subservice=128, ssc=68, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "46":
+ if op_code == "47":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: FPGA action"))
id = 3
command = (
@@ -476,80 +522,266 @@ def pack_star_tracker_commands(
)
command = PusTelecommand(service=8, subservice=128, ssc=69, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "47":
+ if op_code == "48":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Unlock"))
command = object_id + struct.pack("!I", StarTrackerActionIds.UNLOCK)
command = PusTelecommand(service=8, subservice=128, ssc=70, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "48":
+ if op_code == "49":
tc_queue.appendleft(
(QueueCommands.PRINT, "Star tracker: Request camera parameters")
)
command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_CAMERA_PARAMS)
command = PusTelecommand(service=8, subservice=128, ssc=71, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "49":
+ if op_code == "50":
tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Request limits"))
command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_LIMITS)
command = PusTelecommand(service=8, subservice=128, ssc=72, app_data=command)
tc_queue.appendleft(command.pack_command_tuple())
- if op_code == "50":
- tc_queue.appendleft(
- (QueueCommands.PRINT, "Star tracker: Request blob parameters")
- )
- 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")
)
+ json_file = get_config_file()
command = (
object_id
+ struct.pack("!I", StarTrackerActionIds.IMAGE_PROCESSOR)
- + bytearray(ImagePathDefs.jsonFile, "utf-8")
+ + bytearray(json_file, "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:
- region = Region.FREE_1
- address = 0
- command = (
- object_id
- + struct.pack("!I", StarTrackerActionIds.WRITE)
- + struct.pack("!B", region)
- + struct.pack("!I", address)
- + bytearray(ImagePathDefs.flashFile, "utf-8")
- )
- return command
+ if op_code == "52":
+ tc_queue.appendleft(
+ (
+ QueueCommands.PRINT,
+ "Star tracker: EGSE load ground config camera parameters",
+ )
+ )
+ command = (
+ object_id
+ + struct.pack("!I", StarTrackerActionIds.CAMERA)
+ + bytearray(FileDefs.egse_ground_config, "utf-8")
+ )
+ command = PusTelecommand(service=8, subservice=128, ssc=71, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "53":
+ tc_queue.appendleft(
+ (
+ QueueCommands.PRINT,
+ "Star tracker: EGSE load flight config camera parameters",
+ )
+ )
+ command = (
+ object_id
+ + struct.pack("!I", StarTrackerActionIds.CAMERA)
+ + bytearray(FileDefs.egse_flight_config, "utf-8")
+ )
+ command = PusTelecommand(service=8, subservice=128, ssc=72, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "54":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Request log level parameters")
+ )
+ command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_LOG_LEVEL)
+ command = PusTelecommand(service=8, subservice=128, ssc=74, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "55":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Request mounting parameters")
+ )
+ command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_MOUNTING)
+ command = PusTelecommand(service=8, subservice=128, ssc=75, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "56":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Request image processor parameters")
+ )
+ command = object_id + struct.pack(
+ "!I", StarTrackerActionIds.REQ_IMAGE_PROCESSOR
+ )
+ command = PusTelecommand(service=8, subservice=128, ssc=76, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "57":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Request centroiding parameters")
+ )
+ command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_CENTROIDING)
+ command = PusTelecommand(service=8, subservice=128, ssc=75, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "58":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Request lisa parameters")
+ )
+ command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_LISA)
+ command = PusTelecommand(service=8, subservice=128, ssc=76, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "59":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Request matching parameters")
+ )
+ command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_MATCHING)
+ command = PusTelecommand(service=8, subservice=128, ssc=77, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "60":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Request tracking parameters")
+ )
+ command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_TRACKING)
+ command = PusTelecommand(service=8, subservice=128, ssc=78, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "61":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Request validation parameters")
+ )
+ command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_VALIDATION)
+ command = PusTelecommand(service=8, subservice=128, ssc=79, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "62":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Request algo parameters")
+ )
+ command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_ALGO)
+ command = PusTelecommand(service=8, subservice=128, ssc=80, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "63":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Request subscription parameters")
+ )
+ command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_SUBSCRIPTION)
+ command = PusTelecommand(service=8, subservice=128, ssc=81, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "64":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Request log subscription parameters")
+ )
+ command = object_id + struct.pack(
+ "!I", StarTrackerActionIds.REQ_LOG_SUBSCRIPTION
+ )
+ command = PusTelecommand(service=8, subservice=128, ssc=82, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "65":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Request debug camera parameters")
+ )
+ command = object_id + struct.pack("!I", StarTrackerActionIds.REQ_DEBUG_CAMERA)
+ command = PusTelecommand(service=8, subservice=128, ssc=83, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "66":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Set log level parameters")
+ )
+ json_file = get_config_file()
+ command = (
+ object_id
+ + struct.pack("!I", StarTrackerActionIds.LOGLEVEL)
+ + bytearray(json_file, "utf-8")
+ )
+ command = PusTelecommand(service=8, subservice=128, ssc=84, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "67":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Set log subscription parameters")
+ )
+ json_file = get_config_file()
+ command = (
+ object_id
+ + struct.pack("!I", StarTrackerActionIds.LOG_SUBSCRIPTION)
+ + bytearray(json_file, "utf-8")
+ )
+ command = PusTelecommand(service=8, subservice=128, ssc=85, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "68":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Set debug camera parameters")
+ )
+ json_file = get_config_file()
+ command = (
+ object_id
+ + struct.pack("!I", StarTrackerActionIds.DEBUG_CAMERA)
+ + bytearray(json_file, "utf-8")
+ )
+ command = PusTelecommand(service=8, subservice=128, ssc=86, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "69":
+ tc_queue.appendleft((QueueCommands.PRINT, "Star tracker: Firmware update"))
+ firmware = get_firmware()
+ command = (
+ object_id
+ + struct.pack("!I", StarTrackerActionIds.FIRMWARE_UPDATE)
+ + bytearray(firmware, "utf-8")
+ )
+ command = PusTelecommand(service=8, subservice=128, ssc=87, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "70":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Disable timestamp generation")
+ )
+ command = object_id + struct.pack(
+ "!I", StarTrackerActionIds.DISBALE_TIMESTAMP_GENERATION
+ )
+ command = PusTelecommand(service=8, subservice=128, ssc=88, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
+ if op_code == "71":
+ tc_queue.appendleft(
+ (QueueCommands.PRINT, "Star tracker: Enable timestamp generation")
+ )
+ command = object_id + struct.pack(
+ "!I", StarTrackerActionIds.ENABLE_TIMESTAMP_GENERATION
+ )
+ command = PusTelecommand(service=8, subservice=128, ssc=89, app_data=command)
+ tc_queue.appendleft(command.pack_command_tuple())
def pack_read_command(object_id: bytearray) -> bytearray:
- region = Region.STAR_TRACKER_FIRMWARE
- address = 0
+ start_region = StartRegion.STAR_TRACKER_FIRMWARE
size = PartitionSize.STAR_TRACKER_FIRMWARE
+ path = input("Specify storage location (default - /mnt/sd0/startracker): ")
+ if not path:
+ path = FileDefs.download_path
command = (
object_id
- + struct.pack("!I", StarTrackerActionIds.READ)
- + struct.pack("!B", region)
- + struct.pack("!I", address)
+ + struct.pack("!I", StarTrackerActionIds.FLASH_READ)
+ + struct.pack("!B", start_region)
+ struct.pack("!I", size)
- + bytearray(ImagePathDefs.flashReadPath, "utf-8")
+ + bytearray(path, "utf-8")
)
return command
def pack_checksum_command(object_id: bytearray) -> bytearray:
- region = Region.STAR_TRACKER_FIRMWARE
+ start_region = StartRegion.STAR_TRACKER_FIRMWARE
address = 0
size = PartitionSize.STAR_TRACKER_FIRMWARE
command = (
object_id
+ struct.pack("!I", StarTrackerActionIds.CHECKSUM)
- + struct.pack("!B", region)
+ + struct.pack("!B", start_region)
+ struct.pack("!I", address)
+ struct.pack("!I", size)
)
return command
+
+
+def get_config_file() -> str:
+ LOGGER.info("Specify json file")
+ input_helper = InputHelper(json_dict)
+ key = input_helper.get_key()
+ json_file = json_dict[key][1]
+ return json_file
+
+
+def get_firmware() -> str:
+ LOGGER.info("Specify firmware file")
+ input_helper = InputHelper(firmware_dict)
+ key = input_helper.get_key()
+ firmware = firmware_dict[key][1]
+ return firmware
+
+
+def get_upload_image() -> str:
+ LOGGER.info("Specify image to upload")
+ input_helper = InputHelper(upload_image_dict)
+ key = input_helper.get_key()
+ image = upload_image_dict[key][1]
+ return image
diff --git a/pus_tm/factory_hook.py b/pus_tm/factory_hook.py
index 74d73dd..7826b66 100644
--- a/pus_tm/factory_hook.py
+++ b/pus_tm/factory_hook.py
@@ -11,6 +11,7 @@ from tmtccmd.pus.service_1_verification import Service1TMExtended
from tmtccmd.pus.service_17_test import Service17TMExtended
from tmtccmd.tm.service_3_housekeeping import Service3TM
from tmtccmd.tm.service_5_event import Service5TM
+from tmtccmd.tm.service_200_mode import Service200TM
from tmtccmd.utility.tmtc_printer import TmTcPrinter, PrintFormats
from config.definitions import PUS_APID
@@ -44,6 +45,8 @@ def pus_factory_hook(raw_tm_packet: bytearray, tmtc_printer: TmTcPrinter):
tm_packet = Service8TM.unpack(raw_telemetry=raw_tm_packet)
if service_type == 17:
tm_packet = Service17TMExtended.unpack(raw_telemetry=raw_tm_packet)
+ if service_type == 200:
+ tm_packet = Service200TM.unpack(raw_telemetry=raw_tm_packet)
if tm_packet is None:
LOGGER.info(
f"The service {service_type} is not implemented in Telemetry Factory"
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/utility/input_helper.py b/utility/input_helper.py
new file mode 100644
index 0000000..96c10e3
--- /dev/null
+++ b/utility/input_helper.py
@@ -0,0 +1,46 @@
+# -*- coding: utf-8 -*-
+"""
+@file input_helper.py
+@brief This class can be used to get user input. A dictionary must be provided which describes the input options.
+@author J. Meier
+@date 13.02.2021
+"""
+
+from tmtccmd.utility.logger import get_console_logger
+
+LOGGER = get_console_logger()
+
+
+class InputHelper:
+ def __init__(self, menu: dict):
+ """
+ @brief Constructor
+ @param menu The menu describing the input options
+ """
+ self.menu = menu
+
+ def get_key(self) -> str:
+ """
+ @brief Asks the user for input and returns the chosen key
+ """
+ key = self.menu_handler()
+ while key not in self.menu:
+ LOGGER.info("Invalid key specified, try again.")
+ key = self.menu_handler()
+ return key
+
+ def menu_handler(self) -> str:
+ key_column_width = 10
+ description_column_width = 50
+ separator_width = key_column_width + description_column_width + 3
+ separator_string = separator_width * "-"
+ key_string = "Key".ljust(key_column_width)
+ description_string = "Description".ljust(description_column_width)
+ LOGGER.info(f"{key_string} | {description_string}")
+ LOGGER.info(separator_string)
+ for key in self.menu:
+ key_string = key.ljust(key_column_width)
+ description_string = self.menu[key][0].ljust(description_column_width)
+ LOGGER.info(f"{key_string} | {description_string}")
+ key = input("Specify key: ")
+ return key