some architectural improvements
This commit is contained in:
parent
64ade84d51
commit
4f9e246ecd
38
common.py
38
common.py
@ -19,6 +19,7 @@ from tmtccmd.cfdp import (
|
|||||||
CfdpUserBase,
|
CfdpUserBase,
|
||||||
)
|
)
|
||||||
from spacepackets.util import UnsignedByteField
|
from spacepackets.util import UnsignedByteField
|
||||||
|
from tmtccmd.cfdp.defs import CfdpRequestType
|
||||||
from tmtccmd.cfdp.handler import SourceHandler, DestHandler
|
from tmtccmd.cfdp.handler import SourceHandler, DestHandler
|
||||||
from tmtccmd.cfdp.request import PutRequest, PutRequestCfg
|
from tmtccmd.cfdp.request import PutRequest, PutRequestCfg
|
||||||
from tmtccmd.logging import get_current_time_string
|
from tmtccmd.logging import get_current_time_string
|
||||||
@ -50,7 +51,7 @@ from common_tmtc.pus_tc.service_20_parameters import pack_service20_commands_int
|
|||||||
from common_tmtc.pus_tc.service_2_raw_cmd import pack_service_2_commands_into
|
from common_tmtc.pus_tc.service_2_raw_cmd import pack_service_2_commands_into
|
||||||
from common_tmtc.pus_tc.service_3_housekeeping import pack_service_3_commands_into
|
from common_tmtc.pus_tc.service_3_housekeeping import pack_service_3_commands_into
|
||||||
from common_tmtc.pus_tc.service_8_func_cmd import pack_service_8_commands_into
|
from common_tmtc.pus_tc.service_8_func_cmd import pack_service_8_commands_into
|
||||||
from examples.tmtcc import EXAMPLE_APID
|
from examples.tmtcc import EXAMPLE_PUS_APID, EXAMPLE_CFDP_APID
|
||||||
from tmtccmd import TcHandlerBase, get_console_logger, TmTcCfgHookBase, BackendBase
|
from tmtccmd import TcHandlerBase, get_console_logger, TmTcCfgHookBase, BackendBase
|
||||||
from tmtccmd.pus import VerificationWrapper
|
from tmtccmd.pus import VerificationWrapper
|
||||||
from tmtccmd.tc import (
|
from tmtccmd.tc import (
|
||||||
@ -70,7 +71,8 @@ from common_tmtc.pus_tm.factory_hook import pus_factory_hook
|
|||||||
LOGGER = get_console_logger()
|
LOGGER = get_console_logger()
|
||||||
|
|
||||||
|
|
||||||
class CfdpCcsdsWrapper:
|
class CfdpCcsdsWrapper(SpecificApidHandlerBase):
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
cfg: LocalEntityCfg,
|
cfg: LocalEntityCfg,
|
||||||
@ -80,6 +82,7 @@ class CfdpCcsdsWrapper:
|
|||||||
ccsds_seq_cnt_provider: ProvidesSeqCount,
|
ccsds_seq_cnt_provider: ProvidesSeqCount,
|
||||||
ccsds_apid: int,
|
ccsds_apid: int,
|
||||||
):
|
):
|
||||||
|
super().__init__(EXAMPLE_CFDP_APID, None)
|
||||||
self.handler = CfdpHandler(cfg, user, cfdp_seq_cnt_provider, remote_cfg)
|
self.handler = CfdpHandler(cfg, user, cfdp_seq_cnt_provider, remote_cfg)
|
||||||
self.ccsds_seq_cnt_provider = ccsds_seq_cnt_provider
|
self.ccsds_seq_cnt_provider = ccsds_seq_cnt_provider
|
||||||
self.ccsds_apid = ccsds_apid
|
self.ccsds_apid = ccsds_apid
|
||||||
@ -100,12 +103,19 @@ class CfdpCcsdsWrapper:
|
|||||||
def confirm_dest_packet_sent(self):
|
def confirm_dest_packet_sent(self):
|
||||||
self.handler.confirm_dest_packet_sent()
|
self.handler.confirm_dest_packet_sent()
|
||||||
|
|
||||||
def pass_packet(self, packet: SpacePacket):
|
def pass_packet(self, space_packet: SpacePacket):
|
||||||
# Unwrap the user data and pass it to the handler
|
# Unwrap the user data and pass it to the handler
|
||||||
pdu_raw = packet.user_data
|
pdu_raw = space_packet.user_data
|
||||||
pdu_base = PduFactory.from_raw(pdu_raw)
|
pdu_base = PduFactory.from_raw(pdu_raw)
|
||||||
self.handler.pass_packet(pdu_base)
|
self.handler.pass_packet(pdu_base)
|
||||||
|
|
||||||
|
def handle_tm(self, packet: bytes, _user_args: any):
|
||||||
|
ccsds_header_raw = packet[0:6]
|
||||||
|
sp_header = SpacePacketHeader.unpack(ccsds_header_raw)
|
||||||
|
pdu = packet[6:]
|
||||||
|
sp = SpacePacket(sp_header, sec_header=None, user_data=pdu)
|
||||||
|
self.pass_packet(sp)
|
||||||
|
|
||||||
|
|
||||||
class CfdpHandler:
|
class CfdpHandler:
|
||||||
def __init__(
|
def __init__(
|
||||||
@ -115,7 +125,7 @@ class CfdpHandler:
|
|||||||
seq_cnt_provider: ProvidesSeqCount,
|
seq_cnt_provider: ProvidesSeqCount,
|
||||||
remote_cfg: Sequence[RemoteEntityCfg],
|
remote_cfg: Sequence[RemoteEntityCfg],
|
||||||
):
|
):
|
||||||
self.dest_id = UnsignedByteField(EXAMPLE_APID, 2)
|
self.dest_id = UnsignedByteField(EXAMPLE_PUS_APID, 2)
|
||||||
self.remote_cfg_table = RemoteEntityCfgTable()
|
self.remote_cfg_table = RemoteEntityCfgTable()
|
||||||
self.remote_cfg_table.add_remote_entities(remote_cfg)
|
self.remote_cfg_table.add_remote_entities(remote_cfg)
|
||||||
self.dest_handler = DestHandler(cfg, user, self.remote_cfg_table)
|
self.dest_handler = DestHandler(cfg, user, self.remote_cfg_table)
|
||||||
@ -194,7 +204,7 @@ class PusHandler(SpecificApidHandlerBase):
|
|||||||
printer: FsfwTmTcPrinter,
|
printer: FsfwTmTcPrinter,
|
||||||
raw_logger: RawTmtcTimedLogWrapper,
|
raw_logger: RawTmtcTimedLogWrapper,
|
||||||
):
|
):
|
||||||
super().__init__(EXAMPLE_APID, None)
|
super().__init__(EXAMPLE_PUS_APID, None)
|
||||||
self.printer = printer
|
self.printer = printer
|
||||||
self.verif_wrapper = wrapper
|
self.verif_wrapper = wrapper
|
||||||
self.raw_logger = raw_logger
|
self.raw_logger = raw_logger
|
||||||
@ -211,7 +221,6 @@ class PusHandler(SpecificApidHandlerBase):
|
|||||||
class TcHandler(TcHandlerBase):
|
class TcHandler(TcHandlerBase):
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
pus_apid: int,
|
|
||||||
seq_count_provider: FileSeqCountProvider,
|
seq_count_provider: FileSeqCountProvider,
|
||||||
cfdp_handler: CfdpCcsdsWrapper,
|
cfdp_handler: CfdpCcsdsWrapper,
|
||||||
pus_verificator: PusVerificator,
|
pus_verificator: PusVerificator,
|
||||||
@ -225,7 +234,7 @@ class TcHandler(TcHandlerBase):
|
|||||||
self.raw_logger = raw_logger
|
self.raw_logger = raw_logger
|
||||||
self.queue_helper = DefaultPusQueueHelper(
|
self.queue_helper = DefaultPusQueueHelper(
|
||||||
queue_wrapper=None,
|
queue_wrapper=None,
|
||||||
pus_apid=pus_apid,
|
pus_apid=EXAMPLE_PUS_APID,
|
||||||
seq_cnt_provider=seq_count_provider,
|
seq_cnt_provider=seq_count_provider,
|
||||||
pus_verificator=pus_verificator,
|
pus_verificator=pus_verificator,
|
||||||
)
|
)
|
||||||
@ -261,7 +270,11 @@ class TcHandler(TcHandlerBase):
|
|||||||
LOGGER.warning("Invalid Service !")
|
LOGGER.warning("Invalid Service !")
|
||||||
|
|
||||||
def handle_cfdp_procedure(self, info: ProcedureHelper):
|
def handle_cfdp_procedure(self, info: ProcedureHelper):
|
||||||
info.to_def_procedure()
|
cfdp_procedure = info.to_cfdp_procedure()
|
||||||
|
if cfdp_procedure.cfdp_request_type == CfdpRequestType.PUT:
|
||||||
|
# TODO: Start put request if there isn't one pending yet
|
||||||
|
# self.cfdp_handler.handler.put_request_file(...)
|
||||||
|
pass
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def send_cb(self, params: SendCbParams):
|
def send_cb(self, params: SendCbParams):
|
||||||
@ -309,7 +322,7 @@ def setup_params(hook_obj: TmTcCfgHookBase) -> SetupWrapper:
|
|||||||
parser_wrapper.parse()
|
parser_wrapper.parse()
|
||||||
tmtccmd.init_printout(parser_wrapper.use_gui)
|
tmtccmd.init_printout(parser_wrapper.use_gui)
|
||||||
parser_wrapper.set_params(params)
|
parser_wrapper.set_params(params)
|
||||||
params.apid = EXAMPLE_APID
|
params.apid = EXAMPLE_PUS_APID
|
||||||
setup_wrapper = SetupWrapper(hook_obj=hook_obj, setup_params=params)
|
setup_wrapper = SetupWrapper(hook_obj=hook_obj, setup_params=params)
|
||||||
return setup_wrapper
|
return setup_wrapper
|
||||||
|
|
||||||
@ -317,20 +330,21 @@ def setup_params(hook_obj: TmTcCfgHookBase) -> SetupWrapper:
|
|||||||
def setup_tmtc_handlers(
|
def setup_tmtc_handlers(
|
||||||
verif_wrapper: VerificationWrapper,
|
verif_wrapper: VerificationWrapper,
|
||||||
printer: FsfwTmTcPrinter,
|
printer: FsfwTmTcPrinter,
|
||||||
|
cfdp_handler: CfdpCcsdsWrapper,
|
||||||
raw_logger: RawTmtcTimedLogWrapper,
|
raw_logger: RawTmtcTimedLogWrapper,
|
||||||
) -> (CcsdsTmHandler, TcHandler):
|
) -> (CcsdsTmHandler, TcHandler):
|
||||||
|
|
||||||
pus_handler = PusHandler(
|
pus_handler = PusHandler(
|
||||||
printer=printer, raw_logger=raw_logger, wrapper=verif_wrapper
|
printer=printer, raw_logger=raw_logger, wrapper=verif_wrapper, cfdp_handler=cfdp_handler
|
||||||
)
|
)
|
||||||
ccsds_handler = CcsdsTmHandler(None)
|
ccsds_handler = CcsdsTmHandler(None)
|
||||||
ccsds_handler.add_apid_handler(pus_handler)
|
ccsds_handler.add_apid_handler(pus_handler)
|
||||||
tc_handler = TcHandler(
|
tc_handler = TcHandler(
|
||||||
pus_apid=EXAMPLE_APID,
|
|
||||||
file_logger=printer.file_logger,
|
file_logger=printer.file_logger,
|
||||||
raw_logger=raw_logger,
|
raw_logger=raw_logger,
|
||||||
pus_verificator=verif_wrapper.pus_verificator,
|
pus_verificator=verif_wrapper.pus_verificator,
|
||||||
seq_count_provider=PusFileSeqCountProvider(),
|
seq_count_provider=PusFileSeqCountProvider(),
|
||||||
|
cfdp_handler=cfdp_handler
|
||||||
)
|
)
|
||||||
return ccsds_handler, tc_handler
|
return ccsds_handler, tc_handler
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user