Compare commits

...

4 Commits

Author SHA1 Message Date
c9ae13c16f some fixes for common tmtc code 2023-01-13 11:07:08 +01:00
8ad775e5be minor improvements 2022-10-19 11:55:58 +02:00
9abfba1e0e basic printout for received PDU TMs 2022-10-19 11:49:44 +02:00
34203461fa some changes for CFDP done logic 2022-10-17 12:26:00 +02:00
3 changed files with 26 additions and 11 deletions

View File

@@ -4,12 +4,15 @@ from pathlib import Path
from typing import cast from typing import cast
from spacepackets import SpacePacket, SpacePacketHeader from spacepackets import SpacePacket, SpacePacketHeader
from spacepackets.ccsds import SPACE_PACKET_HEADER_SIZE
from spacepackets.cfdp import ( from spacepackets.cfdp import (
TransmissionMode, TransmissionMode,
ChecksumType, ChecksumType,
ConditionCode, ConditionCode,
PduHolder, PduHolder,
DirectiveType, DirectiveType,
PduFactory,
PduType,
) )
from spacepackets.cfdp.pdu import MetadataPdu, FileDataPdu from spacepackets.cfdp.pdu import MetadataPdu, FileDataPdu
from tmtccmd.cfdp import ( from tmtccmd.cfdp import (
@@ -154,11 +157,20 @@ class CfdpInCcsdsWrapper(SpecificApidHandlerBase):
self.handler = cfdp_in_ccsds_handler self.handler = cfdp_in_ccsds_handler
def handle_tm(self, packet: bytes, _user_args: any): def handle_tm(self, packet: bytes, _user_args: any):
ccsds_header_raw = packet[0:6] # Ignore the space packet header. Its only purpose is to use the same protocol and
sp_header = SpacePacketHeader.unpack(ccsds_header_raw) # have a seaprate APID for space packets. If this function is called, the APID is correct.
pdu = packet[6:] pdu = packet[SPACE_PACKET_HEADER_SIZE:]
sp = SpacePacket(sp_header, sec_header=None, user_data=pdu) pdu_base = PduFactory.from_raw(pdu)
self.handler.pass_packet(sp) if pdu_base.pdu_type == PduType.FILE_DATA:
LOGGER.info("Received File Data PDU TM")
else:
if pdu_base.directive_type == DirectiveType.FINISHED_PDU:
LOGGER.info(f"Received Finished PDU TM")
else:
LOGGER.info(
f"Received File Directive PDU with type {pdu_base.directive_type!r} TM"
)
self.handler.pass_pdu_packet(pdu_base)
class PusHandler(SpecificApidHandlerBase): class PusHandler(SpecificApidHandlerBase):
@@ -204,9 +216,11 @@ class TcHandler(TcHandlerBase):
seq_cnt_provider=seq_count_provider, seq_cnt_provider=seq_count_provider,
pus_verificator=pus_verificator, pus_verificator=pus_verificator,
) )
self.cfdp_done = False
self.cfdp_in_ccsds_wrapper = cfdp_in_ccsds_wrapper self.cfdp_in_ccsds_wrapper = cfdp_in_ccsds_wrapper
def cfdp_done(self) -> bool:
return not self.cfdp_in_ccsds_wrapper.handler.put_request_pending()
def feed_cb(self, info: ProcedureWrapper, wrapper: FeedWrapper): def feed_cb(self, info: ProcedureWrapper, wrapper: FeedWrapper):
self.queue_helper.queue_wrapper = wrapper.queue_wrapper self.queue_helper.queue_wrapper = wrapper.queue_wrapper
if info.proc_type == TcProcedureType.DEFAULT: if info.proc_type == TcProcedureType.DEFAULT:
@@ -313,7 +327,7 @@ class TcHandler(TcHandlerBase):
) )
elif info.proc_type == TcProcedureType.CFDP: elif info.proc_type == TcProcedureType.CFDP:
LOGGER.info(f"Finished CFDP queue") LOGGER.info(f"Finished CFDP queue")
self.cfdp_done = True self.cfdp_sending_done = True
def setup_params(hook_obj: TmTcCfgHookBase) -> SetupWrapper: def setup_params(hook_obj: TmTcCfgHookBase) -> SetupWrapper:

View File

@@ -1,12 +1,14 @@
from tmtccmd.pus.pus_17_test import ( from tmtccmd.pus.pus_17_test import (
pack_service_17_ping_command, pack_service_17_ping_command,
pack_generic_service17_test,
) )
from tmtccmd.tc.queue import DefaultPusQueueHelper from tmtccmd.tc.queue import DefaultPusQueueHelper
from tmtccmd.logging import get_console_logger
LOGGER = get_console_logger()
def pack_service_17_commands(op_code: str, q: DefaultPusQueueHelper): def pack_service_17_commands(op_code: str, q: DefaultPusQueueHelper):
if op_code in ["0", "ping"]: if op_code in ["0", "ping"]:
q.add_pus_tc(pack_service_17_ping_command()) q.add_pus_tc(pack_service_17_ping_command())
else: else:
pack_generic_service17_test(q=q) LOGGER.warning(f"Invalid op code {op_code}")

View File

@@ -1,8 +1,7 @@
from datetime import timedelta from datetime import timedelta
from spacepackets.ecss.tc import PusTelecommand from spacepackets.ecss.tc import PusTelecommand
from spacepackets.ecss import PusServices
from deps.spacepackets.spacepackets.ecss import PusServices
from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry from tmtccmd.config import TmtcDefinitionWrapper, OpCodeEntry
from tmtccmd.tc.pus_200_fsfw_modes import pack_mode_data, Modes from tmtccmd.tc.pus_200_fsfw_modes import pack_mode_data, Modes
from tmtccmd.tc.pus_20_params import ( from tmtccmd.tc.pus_20_params import (