Compare commits
4 Commits
73ba9f5d90
...
main
Author | SHA1 | Date | |
---|---|---|---|
c9ae13c16f | |||
8ad775e5be | |||
9abfba1e0e | |||
34203461fa |
28
common.py
28
common.py
@@ -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:
|
||||||
|
@@ -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}")
|
||||||
|
@@ -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 (
|
||||||
|
Reference in New Issue
Block a user