Skip to content

Commit

Permalink
add first service registering decorator
Browse files Browse the repository at this point in the history
  • Loading branch information
robamu committed Aug 12, 2022
1 parent 92e9b3d commit 5e153e5
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 2 deletions.
1 change: 1 addition & 0 deletions tmtccmd/tc/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@
)

from .handler import FeedWrapper, TcHandlerBase, SendCbParams
from .decorator import service_provider, route_to_registered_service_handlers
36 changes: 36 additions & 0 deletions tmtccmd/tc/decorator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import functools

from tmtccmd.tc.procedure import DefaultProcedureInfo
from tmtccmd.tc.queue import DefaultPusQueueHelper

SERVICE_HANDLER_DICT = dict()


def service_provider(service: str):
"""Decorator. TODO: Documentation"""
global SERVICE_HANDLER_DICT

def actual_service_decorator(handler):
global SERVICE_HANDLER_DICT

@functools.wraps(handler)
def service_handler_wrapper(
info: DefaultProcedureInfo,
queue_helper: DefaultPusQueueHelper,
op_code: str,
):
return handler(info, queue_helper, op_code)

SERVICE_HANDLER_DICT.update({service: service_handler_wrapper})
return service_handler_wrapper

return actual_service_decorator


def route_to_registered_service_handlers(
info: DefaultProcedureInfo, queue_helper: DefaultPusQueueHelper, op_code: str
) -> bool:
if info.service in SERVICE_HANDLER_DICT:
SERVICE_HANDLER_DICT[info.service](info, queue_helper, op_code)
return True
return False
4 changes: 2 additions & 2 deletions tmtccmd/tc/pus_5_event.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from spacepackets.ecss.conf import get_default_tc_apid
from spacepackets.ecss.pus_5_event import Subservices

from tmtccmd.tc.queue import QueueHelperBase
from tmtccmd.tc.queue import DefaultPusQueueHelper


def pack_enable_event_reporting_command(ssc: int, apid: int = -1):
Expand All @@ -29,7 +29,7 @@ def pack_disable_event_reporting_command(ssc: int, apid: int = -1):
)


def pack_generic_service_5_test_into(q: QueueHelperBase):
def pack_generic_service_5_test_into(q: DefaultPusQueueHelper):
q.add_log_cmd("Testing Service 5")
# invalid subservice
q.add_log_cmd("Testing Service 5: Invalid subservice")
Expand Down

0 comments on commit 5e153e5

Please sign in to comment.