diff --git a/bsp_hosted/fsfwconfig/objects/systemObjectList.h b/bsp_hosted/fsfwconfig/objects/systemObjectList.h index 5113c26..7908368 100644 --- a/bsp_hosted/fsfwconfig/objects/systemObjectList.h +++ b/bsp_hosted/fsfwconfig/objects/systemObjectList.h @@ -1,7 +1,7 @@ #ifndef FSFWCONFIG_OBJECTS_SYSTEMOBJECTLIST_H_ #define FSFWCONFIG_OBJECTS_SYSTEMOBJECTLIST_H_ -#include +#include namespace objects { enum mission_objects { diff --git a/bsp_hosted/fsfwconfig/objects/translateObjects.cpp b/bsp_hosted/fsfwconfig/objects/translateObjects.cpp index ca96314..9d92e60 100644 --- a/bsp_hosted/fsfwconfig/objects/translateObjects.cpp +++ b/bsp_hosted/fsfwconfig/objects/translateObjects.cpp @@ -1,8 +1,8 @@ /** - * @brief Auto-generated object translation file. + * @brief Auto-generated object translation file. * @details - * Contains 37 translations. - * Generated on: 2021-05-28 18:12:56 + * Contains 39 translations. + * Generated on: 2022-05-20 09:16:37 */ #include "translateObjects.h" @@ -18,10 +18,12 @@ const char *PUS_SERVICE_3_HOUSEKEEPING_STRING = "PUS_SERVICE_3_HOUSEKEEPING"; const char *PUS_SERVICE_5_EVENT_REPORTING_STRING = "PUS_SERVICE_5_EVENT_REPORTING"; const char *PUS_SERVICE_8_FUNCTION_MGMT_STRING = "PUS_SERVICE_8_FUNCTION_MGMT"; const char *PUS_SERVICE_9_TIME_MGMT_STRING = "PUS_SERVICE_9_TIME_MGMT"; +const char *PUS_SERVICE_11_TC_SCHEDULER_STRING = "PUS_SERVICE_11_TC_SCHEDULER"; const char *PUS_SERVICE_17_TEST_STRING = "PUS_SERVICE_17_TEST"; const char *PUS_SERVICE_20_PARAMETERS_STRING = "PUS_SERVICE_20_PARAMETERS"; const char *PUS_SERVICE_200_MODE_MGMT_STRING = "PUS_SERVICE_200_MODE_MGMT"; const char *PUS_SERVICE_201_HEALTH_STRING = "PUS_SERVICE_201_HEALTH"; +const char *CFDP_PACKET_DISTRIBUTOR_STRING = "CFDP_PACKET_DISTRIBUTOR"; const char *HEALTH_TABLE_STRING = "HEALTH_TABLE"; const char *MODE_STORE_STRING = "MODE_STORE"; const char *EVENT_MANAGER_STRING = "EVENT_MANAGER"; @@ -31,8 +33,8 @@ const char *TM_STORE_STRING = "TM_STORE"; const char *IPC_STORE_STRING = "IPC_STORE"; const char *TIME_STAMPER_STRING = "TIME_STAMPER"; const char *FSFW_OBJECTS_END_STRING = "FSFW_OBJECTS_END"; -const char *UDP_BRIDGE_STRING = "UDP_BRIDGE"; -const char *UDP_POLLING_TASK_STRING = "UDP_POLLING_TASK"; +const char *TCPIP_TMTC_BRIDGE_STRING = "TCPIP_TMTC_BRIDGE"; +const char *TCPIP_TMTC_POLLING_TASK_STRING = "TCPIP_TMTC_POLLING_TASK"; const char *CCSDS_DISTRIBUTOR_STRING = "CCSDS_DISTRIBUTOR"; const char *PUS_DISTRIBUTOR_STRING = "PUS_DISTRIBUTOR"; const char *TM_FUNNEL_STRING = "TM_FUNNEL"; @@ -70,6 +72,8 @@ const char *translateObject(object_id_t object) { return PUS_SERVICE_8_FUNCTION_MGMT_STRING; case 0x53000009: return PUS_SERVICE_9_TIME_MGMT_STRING; + case 0x53000011: + return PUS_SERVICE_11_TC_SCHEDULER_STRING; case 0x53000017: return PUS_SERVICE_17_TEST_STRING; case 0x53000020: @@ -78,6 +82,8 @@ const char *translateObject(object_id_t object) { return PUS_SERVICE_200_MODE_MGMT_STRING; case 0x53000201: return PUS_SERVICE_201_HEALTH_STRING; + case 0x53001000: + return CFDP_PACKET_DISTRIBUTOR_STRING; case 0x53010000: return HEALTH_TABLE_STRING; case 0x53010100: @@ -97,9 +103,9 @@ const char *translateObject(object_id_t object) { case 0x53ffffff: return FSFW_OBJECTS_END_STRING; case 0x62000300: - return UDP_BRIDGE_STRING; + return TCPIP_TMTC_BRIDGE_STRING; case 0x62000400: - return UDP_POLLING_TASK_STRING; + return TCPIP_TMTC_POLLING_TASK_STRING; case 0x63000000: return CCSDS_DISTRIBUTOR_STRING; case 0x63000001: diff --git a/bsp_hosted/fsfwconfig/objects/translateObjects.h b/bsp_hosted/fsfwconfig/objects/translateObjects.h index dbf5b46..257912f 100644 --- a/bsp_hosted/fsfwconfig/objects/translateObjects.h +++ b/bsp_hosted/fsfwconfig/objects/translateObjects.h @@ -3,6 +3,6 @@ #include -const char* translateObject(object_id_t object); +const char *translateObject(object_id_t object); #endif /* FSFWCONFIG_OBJECTS_TRANSLATEOBJECTS_H_ */ diff --git a/example_common b/example_common index 4896003..8203995 160000 --- a/example_common +++ b/example_common @@ -1 +1 @@ -Subproject commit 4896003e3f14862f664b73190806558daf924d49 +Subproject commit 8203995deb087c0a51ce7ec7fdc0f0f4f21d06ce diff --git a/generators/.run/objects.run.xml b/generators/.run/objects.run.xml new file mode 100644 index 0000000..df684cc --- /dev/null +++ b/generators/.run/objects.run.xml @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file diff --git a/generators/bsp_hosted_objects.csv b/generators/bsp_hosted_objects.csv new file mode 100644 index 0000000..8f37639 --- /dev/null +++ b/generators/bsp_hosted_objects.csv @@ -0,0 +1,39 @@ +0x4100CAFE;TEST_ASSEMBLY +0x4301CAFE;TEST_CONTROLLER +0x4401AFFE;TEST_DEVICE_HANDLER_0 +0x4402AFFE;TEST_DEVICE_HANDLER_1 +0x4900AFFE;TEST_ECHO_COM_IF +0x53000000;FSFW_OBJECTS_START +0x53000001;PUS_SERVICE_1_VERIFICATION +0x53000002;PUS_SERVICE_2_DEVICE_ACCESS +0x53000003;PUS_SERVICE_3_HOUSEKEEPING +0x53000005;PUS_SERVICE_5_EVENT_REPORTING +0x53000008;PUS_SERVICE_8_FUNCTION_MGMT +0x53000009;PUS_SERVICE_9_TIME_MGMT +0x53000011;PUS_SERVICE_11_TC_SCHEDULER +0x53000017;PUS_SERVICE_17_TEST +0x53000020;PUS_SERVICE_20_PARAMETERS +0x53000200;PUS_SERVICE_200_MODE_MGMT +0x53000201;PUS_SERVICE_201_HEALTH +0x53001000;CFDP_PACKET_DISTRIBUTOR +0x53010000;HEALTH_TABLE +0x53010100;MODE_STORE +0x53030000;EVENT_MANAGER +0x53040000;INTERNAL_ERROR_REPORTER +0x534f0100;TC_STORE +0x534f0200;TM_STORE +0x534f0300;IPC_STORE +0x53500010;TIME_STAMPER +0x53ffffff;FSFW_OBJECTS_END +0x62000300;TCPIP_TMTC_BRIDGE +0x62000400;TCPIP_TMTC_POLLING_TASK +0x63000000;CCSDS_DISTRIBUTOR +0x63000001;PUS_DISTRIBUTOR +0x63000002;TM_FUNNEL +0x74000001;TEST_DUMMY_1 +0x74000002;TEST_DUMMY_2 +0x74000003;TEST_DUMMY_3 +0x74000004;TEST_DUMMY_4 +0x74000005;TEST_DUMMY_5 +0x7400CAFE;TEST_TASK +0xFFFFFFFF;NO_OBJECT diff --git a/generators/eive_mod.db b/generators/eive_mod.db new file mode 100644 index 0000000..216dbf3 Binary files /dev/null and b/generators/eive_mod.db differ diff --git a/generators/gen.py b/generators/gen.py index 2bd9acd..ca7fb2b 100755 --- a/generators/gen.py +++ b/generators/gen.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 import time -# from objects.objects import parse_objects +from objects.objects import parse_objects from events.event_parser import parse_events # from returnvalues.returnvalues_parser import parse_returnvalues from fsfwgen.core import ( @@ -22,7 +22,7 @@ def main(): if args.type == "objects": LOGGER.info(f"Generating objects data..") time.sleep(0.05) - # parse_objects() + parse_objects() elif args.type == "events": LOGGER.info(f"Generating event data") time.sleep(0.05) @@ -35,7 +35,7 @@ def main(): LOGGER.info("Generating all data") parse_objects() parse_events() - parse_returnvalues() + # parse_returnvalues() if __name__ == "__main__": diff --git a/generators/objects/objects.py b/generators/objects/objects.py new file mode 100644 index 0000000..3e8211d --- /dev/null +++ b/generators/objects/objects.py @@ -0,0 +1,117 @@ +"""Part of the Mission Information Base Exporter for the SOURCE project by KSat. +Object exporter. +""" +import datetime +import os + +from fsfwgen.core import get_console_logger +from fsfwgen.objects.objects import ( + sql_object_exporter, + ObjectDefinitionParser, + write_translation_file, + export_object_file, + write_translation_header_file, +) +from fsfwgen.utility.printer import PrettyPrinter +from fsfwgen.utility.file_management import copy_file + +from definitions import BSP_HOSTED, DATABASE_NAME, OBSW_ROOT_DIR, ROOT_DIR, EXAMPLE_COMMON_DIR + +LOGGER = get_console_logger() +DATE_TODAY = datetime.datetime.now() +DATE_STRING_FULL = DATE_TODAY.strftime("%Y-%m-%d %H:%M:%S") + +GENERATE_CSV = True +MOVE_CSV = True + +GENERATE_CPP = True +COPY_CPP = True + +GENERATE_HEADER = True + +FSFW_CONFIG_ROOT = f"{BSP_HOSTED}/fsfwconfig" + +EXPORT_TO_SQL = True + +CPP_COPY_DESTINATION = f"{FSFW_CONFIG_ROOT}/objects/" +CPP_FILENAME = f"{os.path.dirname(os.path.realpath(__file__))}//translateObjects.cpp" +CPP_H_FILENAME = f"{os.path.dirname(os.path.realpath(__file__))}//translateObjects.h" +CSV_OBJECT_FILENAME = f"{ROOT_DIR}/{BSP_HOSTED}_objects.csv" +CSV_COPY_DEST = f"{OBSW_ROOT_DIR}/tmtc/config/objects.csv" +FILE_SEPARATOR = ";" + + +OBJECTS_PATH = f"{FSFW_CONFIG_ROOT}/objects/systemObjectList.h" +FRAMEWORK_OBJECT_PATH = ( + f"{OBSW_ROOT_DIR}/fsfw/src/fsfw/objectmanager/frameworkObjects.h" +) +COMMON_OBJECTS_PATH = f"{EXAMPLE_COMMON_DIR}/config/commonObjects.h" +OBJECTS_DEFINITIONS = [OBJECTS_PATH, FRAMEWORK_OBJECT_PATH, COMMON_OBJECTS_PATH] + +SQL_DELETE_OBJECTS_CMD = """ + DROP TABLE IF EXISTS Objects + """ + +SQL_CREATE_OBJECTS_CMD = """ + CREATE TABLE IF NOT EXISTS Objects( + id INTEGER PRIMARY KEY, + objectid TEXT, + name TEXT + ) + """ + +SQL_INSERT_INTO_OBJECTS_CMD = """ +INSERT INTO Objects(objectid, name) +VALUES(?,?) +""" + + +def parse_objects(print_object_list: bool = True): + # fetch objects + object_parser = ObjectDefinitionParser(OBJECTS_DEFINITIONS) + subsystem_definitions = object_parser.parse_files() + # id_subsystem_definitions.update(framework_subsystem_definitions) + list_items = sorted(subsystem_definitions.items()) + LOGGER.info(f"ObjectParser: Number of objects: {len(list_items)}") + + if print_object_list: + PrettyPrinter.pprint(list_items) + + handle_file_export(list_items) + if EXPORT_TO_SQL: + LOGGER.info("ObjectParser: Exporting to SQL") + sql_object_exporter( + object_table=list_items, + delete_cmd=SQL_DELETE_OBJECTS_CMD, + insert_cmd=SQL_INSERT_INTO_OBJECTS_CMD, + create_cmd=SQL_CREATE_OBJECTS_CMD, + db_filename=f"{ROOT_DIR}/{DATABASE_NAME}", + ) + + +def handle_file_export(list_items): + if GENERATE_CPP: + LOGGER.info("ObjectParser: Generating C++ translation file") + write_translation_file( + filename=CPP_FILENAME, + list_of_entries=list_items, + date_string_full=DATE_STRING_FULL, + ) + if COPY_CPP: + LOGGER.info("ObjectParser: Copying object file to " + CPP_COPY_DESTINATION) + copy_file(CPP_FILENAME, CPP_COPY_DESTINATION) + if GENERATE_HEADER: + write_translation_header_file(filename=CPP_H_FILENAME) + copy_file(filename=CPP_H_FILENAME, destination=CPP_COPY_DESTINATION) + if GENERATE_CSV: + LOGGER.info("ObjectParser: Generating text export") + export_object_file( + filename=CSV_OBJECT_FILENAME, + object_list=list_items, + file_separator=FILE_SEPARATOR, + ) + copy_file( + filename=CSV_OBJECT_FILENAME, + destination=CSV_COPY_DEST, + delete_existing_file=True, + ) diff --git a/generators/objects/translateObjects.cpp b/generators/objects/translateObjects.cpp index d9c242e..9d92e60 100644 --- a/generators/objects/translateObjects.cpp +++ b/generators/objects/translateObjects.cpp @@ -1,8 +1,8 @@ /** - * @brief Auto-generated object translation file. + * @brief Auto-generated object translation file. * @details - * Contains 37 translations. - * Generated on: 2021-05-28 18:12:56 + * Contains 39 translations. + * Generated on: 2022-05-20 09:16:37 */ #include "translateObjects.h" @@ -18,10 +18,12 @@ const char *PUS_SERVICE_3_HOUSEKEEPING_STRING = "PUS_SERVICE_3_HOUSEKEEPING"; const char *PUS_SERVICE_5_EVENT_REPORTING_STRING = "PUS_SERVICE_5_EVENT_REPORTING"; const char *PUS_SERVICE_8_FUNCTION_MGMT_STRING = "PUS_SERVICE_8_FUNCTION_MGMT"; const char *PUS_SERVICE_9_TIME_MGMT_STRING = "PUS_SERVICE_9_TIME_MGMT"; +const char *PUS_SERVICE_11_TC_SCHEDULER_STRING = "PUS_SERVICE_11_TC_SCHEDULER"; const char *PUS_SERVICE_17_TEST_STRING = "PUS_SERVICE_17_TEST"; const char *PUS_SERVICE_20_PARAMETERS_STRING = "PUS_SERVICE_20_PARAMETERS"; const char *PUS_SERVICE_200_MODE_MGMT_STRING = "PUS_SERVICE_200_MODE_MGMT"; const char *PUS_SERVICE_201_HEALTH_STRING = "PUS_SERVICE_201_HEALTH"; +const char *CFDP_PACKET_DISTRIBUTOR_STRING = "CFDP_PACKET_DISTRIBUTOR"; const char *HEALTH_TABLE_STRING = "HEALTH_TABLE"; const char *MODE_STORE_STRING = "MODE_STORE"; const char *EVENT_MANAGER_STRING = "EVENT_MANAGER"; @@ -31,8 +33,8 @@ const char *TM_STORE_STRING = "TM_STORE"; const char *IPC_STORE_STRING = "IPC_STORE"; const char *TIME_STAMPER_STRING = "TIME_STAMPER"; const char *FSFW_OBJECTS_END_STRING = "FSFW_OBJECTS_END"; -const char *UDP_BRIDGE_STRING = "UDP_BRIDGE"; -const char *UDP_POLLING_TASK_STRING = "UDP_POLLING_TASK"; +const char *TCPIP_TMTC_BRIDGE_STRING = "TCPIP_TMTC_BRIDGE"; +const char *TCPIP_TMTC_POLLING_TASK_STRING = "TCPIP_TMTC_POLLING_TASK"; const char *CCSDS_DISTRIBUTOR_STRING = "CCSDS_DISTRIBUTOR"; const char *PUS_DISTRIBUTOR_STRING = "PUS_DISTRIBUTOR"; const char *TM_FUNNEL_STRING = "TM_FUNNEL"; @@ -44,84 +46,88 @@ const char *TEST_DUMMY_5_STRING = "TEST_DUMMY_5"; const char *TEST_TASK_STRING = "TEST_TASK"; const char *NO_OBJECT_STRING = "NO_OBJECT"; -const char* translateObject(object_id_t object) { - switch( (object & 0xFFFFFFFF) ) { - case 0x4100CAFE: - return TEST_ASSEMBLY_STRING; - case 0x4301CAFE: - return TEST_CONTROLLER_STRING; - case 0x4401AFFE: - return TEST_DEVICE_HANDLER_0_STRING; - case 0x4402AFFE: - return TEST_DEVICE_HANDLER_1_STRING; - case 0x4900AFFE: - return TEST_ECHO_COM_IF_STRING; - case 0x53000000: - return FSFW_OBJECTS_START_STRING; - case 0x53000001: - return PUS_SERVICE_1_VERIFICATION_STRING; - case 0x53000002: - return PUS_SERVICE_2_DEVICE_ACCESS_STRING; - case 0x53000003: - return PUS_SERVICE_3_HOUSEKEEPING_STRING; - case 0x53000005: - return PUS_SERVICE_5_EVENT_REPORTING_STRING; - case 0x53000008: - return PUS_SERVICE_8_FUNCTION_MGMT_STRING; - case 0x53000009: - return PUS_SERVICE_9_TIME_MGMT_STRING; - case 0x53000017: - return PUS_SERVICE_17_TEST_STRING; - case 0x53000020: - return PUS_SERVICE_20_PARAMETERS_STRING; - case 0x53000200: - return PUS_SERVICE_200_MODE_MGMT_STRING; - case 0x53000201: - return PUS_SERVICE_201_HEALTH_STRING; - case 0x53010000: - return HEALTH_TABLE_STRING; - case 0x53010100: - return MODE_STORE_STRING; - case 0x53030000: - return EVENT_MANAGER_STRING; - case 0x53040000: - return INTERNAL_ERROR_REPORTER_STRING; - case 0x534f0100: - return TC_STORE_STRING; - case 0x534f0200: - return TM_STORE_STRING; - case 0x534f0300: - return IPC_STORE_STRING; - case 0x53500010: - return TIME_STAMPER_STRING; - case 0x53ffffff: - return FSFW_OBJECTS_END_STRING; - case 0x62000300: - return UDP_BRIDGE_STRING; - case 0x62000400: - return UDP_POLLING_TASK_STRING; - case 0x63000000: - return CCSDS_DISTRIBUTOR_STRING; - case 0x63000001: - return PUS_DISTRIBUTOR_STRING; - case 0x63000002: - return TM_FUNNEL_STRING; - case 0x74000001: - return TEST_DUMMY_1_STRING; - case 0x74000002: - return TEST_DUMMY_2_STRING; - case 0x74000003: - return TEST_DUMMY_3_STRING; - case 0x74000004: - return TEST_DUMMY_4_STRING; - case 0x74000005: - return TEST_DUMMY_5_STRING; - case 0x7400CAFE: - return TEST_TASK_STRING; - case 0xFFFFFFFF: - return NO_OBJECT_STRING; - default: - return "UNKNOWN_OBJECT"; - } - return 0; +const char *translateObject(object_id_t object) { + switch ((object & 0xFFFFFFFF)) { + case 0x4100CAFE: + return TEST_ASSEMBLY_STRING; + case 0x4301CAFE: + return TEST_CONTROLLER_STRING; + case 0x4401AFFE: + return TEST_DEVICE_HANDLER_0_STRING; + case 0x4402AFFE: + return TEST_DEVICE_HANDLER_1_STRING; + case 0x4900AFFE: + return TEST_ECHO_COM_IF_STRING; + case 0x53000000: + return FSFW_OBJECTS_START_STRING; + case 0x53000001: + return PUS_SERVICE_1_VERIFICATION_STRING; + case 0x53000002: + return PUS_SERVICE_2_DEVICE_ACCESS_STRING; + case 0x53000003: + return PUS_SERVICE_3_HOUSEKEEPING_STRING; + case 0x53000005: + return PUS_SERVICE_5_EVENT_REPORTING_STRING; + case 0x53000008: + return PUS_SERVICE_8_FUNCTION_MGMT_STRING; + case 0x53000009: + return PUS_SERVICE_9_TIME_MGMT_STRING; + case 0x53000011: + return PUS_SERVICE_11_TC_SCHEDULER_STRING; + case 0x53000017: + return PUS_SERVICE_17_TEST_STRING; + case 0x53000020: + return PUS_SERVICE_20_PARAMETERS_STRING; + case 0x53000200: + return PUS_SERVICE_200_MODE_MGMT_STRING; + case 0x53000201: + return PUS_SERVICE_201_HEALTH_STRING; + case 0x53001000: + return CFDP_PACKET_DISTRIBUTOR_STRING; + case 0x53010000: + return HEALTH_TABLE_STRING; + case 0x53010100: + return MODE_STORE_STRING; + case 0x53030000: + return EVENT_MANAGER_STRING; + case 0x53040000: + return INTERNAL_ERROR_REPORTER_STRING; + case 0x534f0100: + return TC_STORE_STRING; + case 0x534f0200: + return TM_STORE_STRING; + case 0x534f0300: + return IPC_STORE_STRING; + case 0x53500010: + return TIME_STAMPER_STRING; + case 0x53ffffff: + return FSFW_OBJECTS_END_STRING; + case 0x62000300: + return TCPIP_TMTC_BRIDGE_STRING; + case 0x62000400: + return TCPIP_TMTC_POLLING_TASK_STRING; + case 0x63000000: + return CCSDS_DISTRIBUTOR_STRING; + case 0x63000001: + return PUS_DISTRIBUTOR_STRING; + case 0x63000002: + return TM_FUNNEL_STRING; + case 0x74000001: + return TEST_DUMMY_1_STRING; + case 0x74000002: + return TEST_DUMMY_2_STRING; + case 0x74000003: + return TEST_DUMMY_3_STRING; + case 0x74000004: + return TEST_DUMMY_4_STRING; + case 0x74000005: + return TEST_DUMMY_5_STRING; + case 0x7400CAFE: + return TEST_TASK_STRING; + case 0xFFFFFFFF: + return NO_OBJECT_STRING; + default: + return "UNKNOWN_OBJECT"; + } + return 0; } diff --git a/generators/objects/translateObjects.h b/generators/objects/translateObjects.h index dbf5b46..257912f 100644 --- a/generators/objects/translateObjects.h +++ b/generators/objects/translateObjects.h @@ -3,6 +3,6 @@ #include -const char* translateObject(object_id_t object); +const char *translateObject(object_id_t object); #endif /* FSFWCONFIG_OBJECTS_TRANSLATEOBJECTS_H_ */ diff --git a/tmtc/config/objects.csv b/tmtc/config/objects.csv new file mode 100644 index 0000000..8f37639 --- /dev/null +++ b/tmtc/config/objects.csv @@ -0,0 +1,39 @@ +0x4100CAFE;TEST_ASSEMBLY +0x4301CAFE;TEST_CONTROLLER +0x4401AFFE;TEST_DEVICE_HANDLER_0 +0x4402AFFE;TEST_DEVICE_HANDLER_1 +0x4900AFFE;TEST_ECHO_COM_IF +0x53000000;FSFW_OBJECTS_START +0x53000001;PUS_SERVICE_1_VERIFICATION +0x53000002;PUS_SERVICE_2_DEVICE_ACCESS +0x53000003;PUS_SERVICE_3_HOUSEKEEPING +0x53000005;PUS_SERVICE_5_EVENT_REPORTING +0x53000008;PUS_SERVICE_8_FUNCTION_MGMT +0x53000009;PUS_SERVICE_9_TIME_MGMT +0x53000011;PUS_SERVICE_11_TC_SCHEDULER +0x53000017;PUS_SERVICE_17_TEST +0x53000020;PUS_SERVICE_20_PARAMETERS +0x53000200;PUS_SERVICE_200_MODE_MGMT +0x53000201;PUS_SERVICE_201_HEALTH +0x53001000;CFDP_PACKET_DISTRIBUTOR +0x53010000;HEALTH_TABLE +0x53010100;MODE_STORE +0x53030000;EVENT_MANAGER +0x53040000;INTERNAL_ERROR_REPORTER +0x534f0100;TC_STORE +0x534f0200;TM_STORE +0x534f0300;IPC_STORE +0x53500010;TIME_STAMPER +0x53ffffff;FSFW_OBJECTS_END +0x62000300;TCPIP_TMTC_BRIDGE +0x62000400;TCPIP_TMTC_POLLING_TASK +0x63000000;CCSDS_DISTRIBUTOR +0x63000001;PUS_DISTRIBUTOR +0x63000002;TM_FUNNEL +0x74000001;TEST_DUMMY_1 +0x74000002;TEST_DUMMY_2 +0x74000003;TEST_DUMMY_3 +0x74000004;TEST_DUMMY_4 +0x74000005;TEST_DUMMY_5 +0x7400CAFE;TEST_TASK +0xFFFFFFFF;NO_OBJECT