This commit is contained in:
@ -1,8 +1,9 @@
|
||||
import logging
|
||||
from typing import Any
|
||||
|
||||
from eive_tmtc.config.definitions import CFDP_APID
|
||||
from spacepackets.ccsds import SPACE_PACKET_HEADER_SIZE
|
||||
from spacepackets.cfdp import PduFactory, PduType, DirectiveType
|
||||
from spacepackets.cfdp import PduFactory, PduType
|
||||
from tmtccmd.cfdp.handler import CfdpInCcsdsHandler
|
||||
from tmtccmd.tmtc import SpecificApidHandlerBase
|
||||
|
||||
@ -11,17 +12,18 @@ _LOGGER = logging.getLogger(__name__)
|
||||
|
||||
class CfdpInCcsdsWrapper(SpecificApidHandlerBase):
|
||||
def __init__(self, cfdp_in_ccsds_handler: CfdpInCcsdsHandler):
|
||||
super().__init__(CFDP_APID, None)
|
||||
self.handler = cfdp_in_ccsds_handler
|
||||
super().__init__(CFDP_APID, None)
|
||||
|
||||
def handle_tm(self, packet: bytes, _user_args: any):
|
||||
def handle_tm(self, packet: bytes, _user_args: Any):
|
||||
# Ignore the space packet header. Its only purpose is to use the same protocol and
|
||||
# have a seaprate APID for space packets. If this function is called, the APID is correct.
|
||||
pdu = packet[SPACE_PACKET_HEADER_SIZE:]
|
||||
pdu_base = PduFactory.from_raw(pdu)
|
||||
if pdu_base.pdu_type == PduType.FILE_DATA:
|
||||
generic_pdu = PduFactory.from_raw(pdu)
|
||||
assert generic_pdu is not None
|
||||
if generic_pdu.pdu_type == PduType.FILE_DATA:
|
||||
_LOGGER.info("Received File Data PDU")
|
||||
else:
|
||||
directive_type = DirectiveType(pdu_base.directive_type)
|
||||
directive_type = PduFactory.pdu_directive_type(pdu)
|
||||
_LOGGER.info(f"Received File Directive PDU with type {directive_type!r}")
|
||||
self.handler.insert_pdu_packet(pdu_base)
|
||||
self.handler.insert_pdu_packet(generic_pdu)
|
||||
|
@ -1,7 +1,10 @@
|
||||
from datetime import timedelta
|
||||
import logging
|
||||
|
||||
from spacepackets.cfdp import ConditionCode
|
||||
from spacepackets.util import UnsignedByteField
|
||||
from tmtccmd.cfdp import CfdpUserBase, TransactionId
|
||||
from tmtccmd.cfdp.mib import CheckTimerProvider, Countdown, EntityType
|
||||
from tmtccmd.cfdp.user import (
|
||||
TransactionFinishedParams,
|
||||
MetadataRecvParams,
|
||||
@ -11,6 +14,16 @@ from tmtccmd.cfdp.user import (
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class EiveCheckTimerProvider(CheckTimerProvider):
|
||||
def provide_check_timer(
|
||||
self,
|
||||
local_entity_id: UnsignedByteField,
|
||||
remote_entity_id: UnsignedByteField,
|
||||
entity_type: EntityType,
|
||||
) -> Countdown:
|
||||
return Countdown(timedelta(seconds=5.0))
|
||||
|
||||
|
||||
class EiveCfdpUser(CfdpUserBase):
|
||||
def transaction_indication(self, transaction_id: TransactionId):
|
||||
_LOGGER.info(f"CFDP User: Start of File {transaction_id}")
|
||||
|
Reference in New Issue
Block a user