eive-tmtc/pus_tm/event_handler.py

48 lines
1.5 KiB
Python
Raw Normal View History

2022-03-04 11:02:10 +01:00
import os.path
2022-03-04 14:27:19 +01:00
from config.object_ids import get_object_ids
2022-04-05 00:51:52 +02:00
from tmtccmd.logging import get_console_logger
from tmtccmd.fsfw import parse_fsfw_events_csv, EventDictT, EventInfo
2022-03-04 11:56:42 +01:00
LOGGER = get_console_logger()
2022-03-04 11:02:10 +01:00
DEFAULT_EVENTS_CSV_PATH = "config/events.csv"
2022-03-04 14:27:19 +01:00
__EVENT_DICT = None
2022-03-04 11:56:42 +01:00
2022-03-04 14:27:19 +01:00
def get_event_dict() -> EventDictT:
global __EVENT_DICT
if __EVENT_DICT is None:
if os.path.exists(DEFAULT_EVENTS_CSV_PATH):
__EVENT_DICT = parse_fsfw_events_csv(DEFAULT_EVENTS_CSV_PATH)
else:
LOGGER.warning(f"No Event CSV file found at {DEFAULT_EVENTS_CSV_PATH}")
__EVENT_DICT = dict()
return __EVENT_DICT
2022-03-04 11:02:10 +01:00
def handle_event_packet(
2022-03-04 10:44:55 +01:00
object_id: bytes, event_id: int, param_1: int, param_2: int
) -> str:
2022-03-04 11:56:42 +01:00
additional_event_info = ""
2022-03-04 14:27:19 +01:00
event_dict = get_event_dict()
info = event_dict.get(event_id)
2022-03-07 11:26:44 +01:00
if info is None:
LOGGER.warning(f"Event ID {event_id} has no information")
info = EventInfo()
info.name = "Unknown event"
2022-03-04 14:27:19 +01:00
obj_ids = get_object_ids()
2022-03-07 11:26:44 +01:00
obj_id_obj = obj_ids.get(bytes(object_id))
2022-03-04 14:27:19 +01:00
if obj_id_obj is None:
LOGGER.warning(f"Object ID 0x{object_id.hex()} has no name")
obj_name = object_id.hex()
else:
obj_name = obj_id_obj.name
generic_event_string = f"Object {obj_name} generated Event {event_id} | {info.name}"
if info.info != "":
additional_event_info = (
f" | Additional info: {info.info} | P1: {param_1} | P2: {param_2}"
)
2022-03-04 11:56:42 +01:00
return generic_event_string + additional_event_info