diff --git a/tc/obsw_tc_service20.py b/tc/obsw_tc_service20.py index 1f607ca42c394fd3730a2afa9511de3255ac155f..f0973ce9a03e5c0212a770edb98a615d604e5de3 100644 --- a/tc/obsw_tc_service20.py +++ b/tc/obsw_tc_service20.py @@ -16,8 +16,8 @@ from tc.obsw_tc_service200 import pack_mode_data def pack_service20_test_into(tc_queue: Deque, called_externally: bool = False) -> Deque: #parameter IDs parameterID0 = 0 - parameterID1 = 1 - parameterID2 = 2 + parameterID1 = 256 + parameterID2 = 512 if called_externally is False: tc_queue.appendleft(("print", "Testing Service 20")) @@ -58,97 +58,59 @@ def pack_service20_test_into(tc_queue: Deque, called_externally: bool = False) - #test checking Load for uint32_t tc_queue.appendleft(("print", "Testing Service 20: Load uint32_t")) parameter_id = struct.pack(">I", parameterID0) + type_and_matrix_data = pack_type_and_matrix_data(3, 14, 1, 1) parameter_data = struct.pack(">I", 42) - payload = object_id + parameter_id + parameter_data - command = PusTelecommand(service=20, subservice=128, ssc=2001, app_data=payload) + payload = object_id + parameter_id+ type_and_matrix_data + parameter_data + command = PusTelecommand(service=20, subservice=128, ssc=2010, app_data=payload) tc_queue.appendleft(command.pack_command_tuple()) #test checking Dump for uint32_t tc_queue.appendleft(("print", "Testing Service 20: Dump uint32_t")) parameter_id = struct.pack(">I", parameterID0) payload = object_id + parameter_id - command = PusTelecommand(service=20, subservice=129, ssc=2001, app_data=payload) + command = PusTelecommand(service=20, subservice=129, ssc=2020, app_data=payload) tc_queue.appendleft(command.pack_command_tuple()) - if called_externally is False: - tc_queue.appendleft(("export", "log/tmtc_log_service20.txt")) - return tc_queue - - -""" #test checking Load for int32_t + tc_queue.appendleft(("print", "Testing Service 20: Load int32_t")) parameter_id = struct.pack(">I", parameterID1) - parameter_data = struct.pack(">I", -42) - payload = object_id + parameter_id + parameter_data - command = PusTelecommand(service=20, subservice=128, ssc=2001, app_data=payload) + type_and_matrix_data = pack_type_and_matrix_data(4, 14, 1, 1) + parameter_data = struct.pack(">i", -42) + payload = object_id + parameter_id+ type_and_matrix_data + parameter_data + command = PusTelecommand(service=20, subservice=128, ssc=2030, app_data=payload) tc_queue.appendleft(command.pack_command_tuple()) #test checking Dump for int32_t tc_queue.appendleft(("print", "Testing Service 20: Dump int32_t")) parameter_id = struct.pack(">I", parameterID1) payload = object_id + parameter_id - command = PusTelecommand(service=20, subservice=129, ssc=2001, app_data=payload) + command = PusTelecommand(service=20, subservice=129, ssc=2040, app_data=payload) tc_queue.appendleft(command.pack_command_tuple()) #test checking Load for float tc_queue.appendleft(("print", "Testing Service 20: Load float")) parameter_id = struct.pack(">I", parameterID2) - parameter_data = struct.pack(">I", 4.2) - payload = object_id + parameter_id + parameter_data - command = PusTelecommand(service=20, subservice=128, ssc=2001, app_data=payload) + type_and_matrix_data = pack_type_and_matrix_data(5, 1, 1, 1) + parameter_data = struct.pack(">f", 4.2) + payload = object_id + parameter_id+ type_and_matrix_data + parameter_data + command = PusTelecommand(service=20, subservice=128, ssc=2050, app_data=payload) tc_queue.appendleft(command.pack_command_tuple()) #test checking Dump for float tc_queue.appendleft(("print", "Testing Service 20: Dump float")) parameter_id = struct.pack(">I", parameterID2) payload = object_id + parameter_id - command = PusTelecommand(service=20, subservice=129, ssc=2001, app_data=payload) - tc_queue.appendleft(command.pack_command_tuple()) -""" - - - - -""" - # set mode on - tc_queue.appendleft(("print", "Testing Service 8: Set On Mode")) - mode_data = pack_mode_data(object_id, 1, 0) - command = PusTelecommand(service=200, subservice=1, ssc=800, app_data=mode_data) + command = PusTelecommand(service=20, subservice=129, ssc=2060, app_data=payload) tc_queue.appendleft(command.pack_command_tuple()) - # set mode normal - tc_queue.appendleft(("print", "Testing Service 8: Set Normal Mode")) - mode_data = pack_mode_data(object_id, 2, 0) - command = PusTelecommand(service=200, subservice=1, ssc=810, app_data=mode_data) - tc_queue.appendleft(command.pack_command_tuple()) - - # Direct command which triggers completion reply - tc_queue.appendleft(("print", "Testing Service 8: Trigger Completion Reply")) - action_id = g.DUMMY_COMMAND_1 - direct_command = object_id + action_id - command = PusTelecommand(service=8, subservice=128, ssc=820, app_data=direct_command) - tc_queue.appendleft(command.pack_command_tuple()) - - # Direct command which triggers _tm_data reply - tc_queue.appendleft(("print", "Testing Service 8: Trigger Data Reply")) - action_id = g.DUMMY_COMMAND_2 - command_param1 = g.DUMMY_COMMAND_2_PARAM_1 - command_param2 = g.DUMMY_COMMAND_2_PARAM_2 - direct_command = object_id + action_id + command_param1 + command_param2 - command = PusTelecommand(service=8, subservice=128, ssc=830, app_data=direct_command) - tc_queue.appendleft(command.pack_command_tuple()) - - # Direct command which triggers an additional step reply and one completion reply - tc_queue.appendleft(("print", "Testing Service 8: Trigger Step and Completion Reply")) - action_id = g.DUMMY_COMMAND_3 - direct_command = object_id + action_id - command = PusTelecommand(service=8, subservice=128, ssc=840, app_data=direct_command) - tc_queue.appendleft(command.pack_command_tuple()) + if called_externally is False: + tc_queue.appendleft(("export", "log/tmtc_log_service20.txt")) + return tc_queue - # set mode off - tc_queue.appendleft(("print", "Testing Service 8: Set Off Mode")) - mode_data = pack_mode_data(object_id, 0, 0) - command = PusTelecommand(service=200, subservice=1, ssc=800, app_data=mode_data) - tc_queue.appendleft(command.pack_command_tuple()) - tc_queue.appendleft(("wait", 2)) -""" +def pack_type_and_matrix_data(ptc, pfc, column, row): + data = bytearray(4) + data[0] = ptc + data[1] = pfc + data[2] = column + data[3] = row + return data diff --git a/tm/obsw_pus_tm_factory.py b/tm/obsw_pus_tm_factory.py index 7bad970302235aefb0e429eed3ec73219ee905c8..42c635580eaf62046f47ec174f76f2768ee44074 100644 --- a/tm/obsw_pus_tm_factory.py +++ b/tm/obsw_pus_tm_factory.py @@ -114,7 +114,12 @@ class Service20TM(PusTelemetry): self.type_pfc = self._tm_data[9] self.column = self._tm_data[10] self.row = self._tm_data[11] - self.param = struct.unpack('>I', self._tm_data[12:datasize])[0] + if self.type_ptc == 3 and self.type_pfc == 14: + self.param = struct.unpack('>I', self._tm_data[12:datasize])[0] + if self.type_ptc == 4 and self.type_pfc == 14: + self.param = struct.unpack('>i', self._tm_data[12:datasize])[0] + if self.type_ptc == 5 and self.type_pfc == 1: + self.param = struct.unpack('>f', self._tm_data[12:datasize])[0] self.specify_packet_info("Functional Commanding Reply") def append_telemetry_content(self, array): @@ -125,7 +130,10 @@ class Service20TM(PusTelemetry): array.append("PTC: " + str(self.type_ptc) + " | PFC: " + str(self.type_pfc)) array.append(str(self.column)) array.append(str(self.row)) - array.append(str(hex(self.param))) + if self.type_ptc == 5 and self.type_pfc == 1: + array.append(str(float(self.param))) + else: + array.append(str(hex(self.param))) return def append_telemetry_column_headers(self, array):