From c90738d58f186cfcc36f589a60477e8363f96639 Mon Sep 17 00:00:00 2001 From: "John P. Lucas" Date: Tue, 19 Aug 2025 22:17:03 -0400 Subject: [PATCH 01/12] [#24] Component Mold and EPS (#50) * [tryspaceorg/tryspace-lab#24] Created tryspace-comp-mold.py; * [tryspaceorg/tryspace-lab#26] Initial comp/eps from mold; * [tryspaceorg/tryspace-lab#26] Overhaul the EPS to use I2C; * [tryspaceorg/tryspace-lab#26] Updated cli to use orchestrator and proved with EPS; * [tryspaceorg/tryspace-lab#26] Removed standalone sims in favor of libraries for tryspace-director; * [tryspaceorg/tryspace-lab#26] Resolved error with eps.xtce; * [tryspaceorg/tryspace-lab#26] Flattened GSW command structure and fixed conversions; * [tryspaceorg/tryspace-lab#26] Updates to submodules after PR review; --- .github/PULL_REQUEST_TEMPLATE/feature.md | 21 +++ .github/PULL_REQUEST_TEMPLATE/issue.md | 15 -- .gitignore | 3 +- .gitmodules | 4 + Makefile | 43 +++-- atlas | 2 +- cfg/{cli-compose.yml => cli-compose.j2} | 14 +- cfg/drm/drm.yaml | 1 + cfg/{lab-compose.yml => lab-compose.yaml} | 2 +- cfg/tryspace-comp-mold.py | 213 ++++++++++++++++++++++ cfg/tryspace-config.yaml | 3 + cfg/tryspace-orchestrator.py | 17 +- comp/demo | 2 +- comp/eps | 1 + fsw | 2 +- gsw | 2 +- simulith | 2 +- 17 files changed, 302 insertions(+), 45 deletions(-) create mode 100644 .github/PULL_REQUEST_TEMPLATE/feature.md delete mode 100644 .github/PULL_REQUEST_TEMPLATE/issue.md rename cfg/{cli-compose.yml => cli-compose.j2} (79%) rename cfg/{lab-compose.yml => lab-compose.yaml} (97%) create mode 100644 cfg/tryspace-comp-mold.py create mode 160000 comp/eps diff --git a/.github/PULL_REQUEST_TEMPLATE/feature.md b/.github/PULL_REQUEST_TEMPLATE/feature.md new file mode 100644 index 0000000..7af35a0 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/feature.md @@ -0,0 +1,21 @@ +## Summary + +Provide a brief description of the changes in this pull request. + +## How to Test + +* ... + +## Checklist + +- [ ] My code follows the project's coding standards +- [ ] I have performed a self-review of my own code +- [ ] I have made corresponding changes to the documentation +- [ ] I have added tests that prove my fix is effective or that my feature works + +## Related + +List any related issues or submodule PRs that need to be completed: +* ... + +Closes #123. diff --git a/.github/PULL_REQUEST_TEMPLATE/issue.md b/.github/PULL_REQUEST_TEMPLATE/issue.md deleted file mode 100644 index b1a25cc..0000000 --- a/.github/PULL_REQUEST_TEMPLATE/issue.md +++ /dev/null @@ -1,15 +0,0 @@ -## Summary of PR goals - -Provide a brief description of the purpose of this pull request. - -## How to test? - -Provide instructions for testing this pull request. - -## Submodule PRs and actions prior to closing this - -List any submodule pull requests or actions that need to be completed before closing this pull request. - -## Closes - -Reference the issue(s) this pull request closes, e.g., Closes #123. diff --git a/.gitignore b/.gitignore index e8d0fb6..8ba3c9e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .vscode build cfg/active.yaml -cfg/build.yaml \ No newline at end of file +cfg/build.yaml +cfg/cli-compose.yaml \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index 7d90257..ee48375 100644 --- a/.gitmodules +++ b/.gitmodules @@ -18,3 +18,7 @@ path = atlas url = https://github.com/TrySpaceOrg/TrySpaceOrg.github.io.git branch = main +[submodule "comp/eps"] + path = comp/eps + url = https://github.com/TrySpaceOrg/tryspace-comp-eps.git + branch = main diff --git a/Makefile b/Makefile index fb6a367..7926bdd 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ # Makefile for TrySpace Lab development -.PHONY: build clean clean-cli clean-fsw clean-gsw clean-sim cfg cli container debug fsw gsw help sim start stop uninstall +.PHONY: build clean clean-cache clean-cli clean-fsw clean-gsw clean-sim cfg cli container debug fsw gsw help mold sim start stop uninstall # Build image name export BUILD_IMAGE ?= tryspaceorg/tryspace-lab:0.0.0 @@ -18,17 +18,19 @@ cfg: container clean: $(MAKE) stop - @if docker image inspect $(BUILD_IMAGE):latest >/dev/null 2>&1; then \ + @if docker image inspect $(BUILD_IMAGE) >/dev/null 2>&1; then \ $(MAKE) clean-cli; \ $(MAKE) clean-fsw; \ $(MAKE) clean-gsw; \ $(MAKE) clean-sim; \ - docker volume ls -q --filter "name=gsw-data" | xargs -r docker volume rm \ - docker volume ls -q --filter "name=simulith_ipc" | xargs -r docker volume rm \ + docker volume ls -q --filter "name=gsw-data" | xargs -r docker volume rm; \ + docker volume ls -q --filter "name=simulith_ipc" | xargs -r docker volume rm; \ else \ echo "Docker image $(BUILD_IMAGE) does not exist. Skipping clean subcommands."; \ fi - rm -f $(CFG_DIR)/active.yaml $(CFG_DIR)/build.yaml + +clean-cache: + docker builder prune -f clean-cli: @for dir in $(CURDIR)/comp/*/cli ; do \ @@ -44,7 +46,7 @@ clean-gsw: cd gsw && $(MAKE) clean clean-sim: - @for dir in $(CURDIR)/comp/* ; do \ + @for dir in $(CURDIR)/comp/*/sim ; do \ if [ -d "$$dir" ] && [ -f "$$dir/Makefile" ]; then \ $(MAKE) -C "$$dir" clean; \ fi; \ @@ -53,13 +55,13 @@ clean-sim: cli: cfg $(MAKE) container + $(MAKE) sim @for dir in $(CURDIR)/comp/*/cli ; do \ if [ -f "$$dir/Makefile" ]; then \ $(MAKE) -C "$$dir" runtime; \ fi; \ done - cd $(CURDIR)/simulith && $(MAKE) director && $(MAKE) server - docker compose -f ./cfg/cli-compose.yml up + docker compose -f ./cfg/cli-compose.yaml up container: cfg/Dockerfile.base @command -v docker >/dev/null 2>&1 || { echo "Error: docker is not installed or not in PATH."; exit 1; } @@ -74,6 +76,15 @@ fsw: cfg gsw: cfg cd $(CURDIR)/gsw && $(MAKE) runtime +mold: + @if [ "$(COMP)" = "" ]; then \ + echo "Error: COMP parameter is required"; \ + echo "Usage: make mold COMP="; \ + echo "Example: make mold COMP=my_sensor"; \ + exit 1; \ + fi + python3 $(CFG_DIR)/tryspace-comp-mold.py "$(COMP)" + help: @echo "Usage: make " @echo "Targets:" @@ -81,6 +92,7 @@ help: @echo " cfg - Run orchestrator to configure environment" @echo " cli - Build CLI and start CLI services" @echo " clean - Remove build artifacts and stop services" + @echo " clean-cache - Clean Docker build cache (frees significant disk space)" @echo " clean-cli - Clean CLI components" @echo " clean-fsw - Clean FSW components" @echo " clean-gsw - Clean GSW components" @@ -89,6 +101,7 @@ help: @echo " debug - Start a debug shell in the container" @echo " fsw - Build FSW" @echo " gsw - Build GSW" + @echo " mold - Create new component from demo template (Usage: make mold COMP=)" @echo " sim - Build Simulith and component simulators" @echo " start - Start lab services" @echo " stop - Stop lab and CLI services, clean up Docker images" @@ -98,20 +111,24 @@ sim: cfg @for dir in $(CURDIR)/comp/*/sim ; do \ if [ -d "$$dir" ] && [ -f "$$dir/Makefile" ]; then \ echo "Building component in $$dir"; \ - $(MAKE) -C "$$dir" runtime; \ + $(MAKE) -C "$$dir" build; \ fi; \ done cd $(CURDIR)/simulith && $(MAKE) director && $(MAKE) server start: cfg - docker compose -f ./cfg/lab-compose.yml up + docker compose -f ./cfg/lab-compose.yaml up stop: - docker compose -f ./cfg/cli-compose.yml down - docker compose -f ./cfg/lab-compose.yml down + docker compose -f ./cfg/cli-compose.yaml down --remove-orphans + docker compose -f ./cfg/lab-compose.yaml down --remove-orphans docker images -f "dangling=true" -q | xargs -r docker rmi + @echo "" + @echo "To cleanup Docker build cache, run: make clean-cache" + @echo "To cleanup everything Docker, run: docker system prune -a" -uninstall: clean +uninstall: clean clean-cache + rm -f $(CFG_DIR)/active.yaml $(CFG_DIR)/build.yaml docker ps -a --filter "name=tryspace-" -q | xargs -r docker rm -f docker images "tryspace-*" -q | xargs -r docker rmi docker volume ls -q --filter "name=gsw-data" | xargs -r docker volume rm diff --git a/atlas b/atlas index b2640ae..960e60c 160000 --- a/atlas +++ b/atlas @@ -1 +1 @@ -Subproject commit b2640ae08c899bc5f74d0e654554a7d254abe369 +Subproject commit 960e60cffa4eab8652d1cc6f82bf94199d05d217 diff --git a/cfg/cli-compose.yml b/cfg/cli-compose.j2 similarity index 79% rename from cfg/cli-compose.yml rename to cfg/cli-compose.j2 index 312ad0a..62f9de1 100644 --- a/cfg/cli-compose.yml +++ b/cfg/cli-compose.j2 @@ -1,9 +1,5 @@ -# Start -# docker compose -f cli-compose.yml up -# View specific containers -# docker attach tryspace-comp-demo-cli -# docker attach tryspace-sim -# docker attach tryspace-director +# Jinja2 template for dynamic CLI Compose file +# Usage: Render with orchestrator using active CLI component services: tryspace-sim: image: tryspace-server:latest @@ -40,9 +36,9 @@ services: tmpfs: - /dev/shm:noexec,nosuid,size=100m - tryspace-comp-demo-cli: - image: tryspace-comp-demo-cli:latest - container_name: tryspace-comp-demo-cli + tryspace-comp-{{ cli_component }}-cli: + image: tryspace-comp-{{ cli_component }}-cli:latest + container_name: tryspace-comp-{{ cli_component }}-cli networks: - tryspace-net stdin_open: true diff --git a/cfg/drm/drm.yaml b/cfg/drm/drm.yaml index 40540e8..0ca2482 100644 --- a/cfg/drm/drm.yaml +++ b/cfg/drm/drm.yaml @@ -1,6 +1,7 @@ mission_name: "drm" components: - name: "demo" + - name: "eps" scenarios: - name: "nominal" config_file: "drm/scenarios/drm-nominal.yaml" diff --git a/cfg/lab-compose.yml b/cfg/lab-compose.yaml similarity index 97% rename from cfg/lab-compose.yml rename to cfg/lab-compose.yaml index 444934d..917c325 100644 --- a/cfg/lab-compose.yml +++ b/cfg/lab-compose.yaml @@ -1,5 +1,5 @@ # Start -# docker compose -f lab-compose.yml up +# docker compose -f lab-compose.yaml up # View specific containers # docker attach tryspace-fsw # docker attach tryspace-director diff --git a/cfg/tryspace-comp-mold.py b/cfg/tryspace-comp-mold.py new file mode 100644 index 0000000..621f45d --- /dev/null +++ b/cfg/tryspace-comp-mold.py @@ -0,0 +1,213 @@ +#!/usr/bin/env python3 +""" +TrySpace Component Mold Generator + +Generate a new component by: +- Copy all files from ./comp/demo to ./comp/ +- Change file contents from "demo" to the provided component name +- Rename files that contain "demo" in their names +""" + +import os +import sys +import shutil +import re +import argparse +from pathlib import Path + + +def validate_component_name(name): + """Validate the component name follows naming conventions.""" + if not name: + raise ValueError("Component name cannot be empty") + + # Check for valid characters (alphanumeric and underscore) + if not re.match(r'^[a-zA-Z][a-zA-Z0-9_]*$', name): + raise ValueError("Component name must start with a letter and contain only letters, numbers, and underscores") + + # Convert to lowercase for consistency + return name.lower() + + +def get_name_variants(component_name): + """Generate different case variants of the component name.""" + name_lower = component_name.lower() + name_first = name_lower.capitalize() + name_upper = name_lower.upper() + + return { + 'lower': name_lower, + 'first': name_first, + 'upper': name_upper + } + + +def ignore_patterns(dir, files): + """Define patterns to ignore during copy.""" + ignored = [] + for file in files: + # Ignore git files and directories + if file == '.git' or file == '.gitmodules': + ignored.append(file) + # Ignore build directories + elif file == 'build': + ignored.append(file) + # Ignore device configuration + elif file == 'device_cfg.h': + ignored.append(file) + # Ignore common temporary/cache files + elif file.startswith('.') and file.endswith(('.swp', '.tmp', '.cache')): + ignored.append(file) + return ignored + + +def copy_demo_component(source_dir, target_dir): + """Copy the demo component directory to the new component directory.""" + if target_dir.exists(): + response = input(f"Component '{target_dir.name}' already exists. Overwrite? (y/N): ") + if response.lower() != 'y': + print("Aborting component creation.") + sys.exit(0) + shutil.rmtree(target_dir) + + print(f"Copying demo component from {source_dir} to {target_dir}") + shutil.copytree(source_dir, target_dir, ignore=ignore_patterns) + + print("Skipped git files, build directories, and temporary files during copy") + + +def replace_content_in_files(target_dir, name_variants): + """Replace 'demo' with component name variants in file contents.""" + print("Updating file contents...") + + # Define replacement patterns + replacements = [ + # Component name variants + ('DEMO', name_variants['upper']), + ('Demo', name_variants['first']), + ('demo', name_variants['lower']), + # Change USART device from 5 to 9 in device config + ('/dev/usart_5', '/dev/usart_9'), + ('handle: 5', 'handle: 9'), + # Change message IDs to avoid conflicts (A to C, B to D) + ('0x18FA', '0x18FC'), + ('0x18FB', '0x18FD'), + ('0x08FA', '0x08FC'), + ('0x08FB', '0x08FD') + ] + + # Find all text files (exclude binary files) + text_extensions = {'.c', '.h', '.cmake', '.cli', '.txt', '.md', '.yml', '.yaml', '.xtce', '.scr', '.j2'} + + for file_path in target_dir.rglob('*'): + if file_path.is_file() and (file_path.suffix.lower() in text_extensions or file_path.name in ['CMakeLists.txt', 'Makefile']): + try: + with open(file_path, 'r', encoding='utf-8') as f: + content = f.read() + + modified = False + for old_pattern, new_pattern in replacements: + if old_pattern in content: + content = content.replace(old_pattern, new_pattern) + modified = True + + if modified: + with open(file_path, 'w', encoding='utf-8') as f: + f.write(content) + print(f" Updated: {file_path.relative_to(target_dir)}") + + except (UnicodeDecodeError, PermissionError) as e: + print(f" Skipped: {file_path.relative_to(target_dir)} ({e})") + + +def rename_files_and_dirs(target_dir, name_variants): + """Rename files and directories that contain 'demo' in their names.""" + print("Renaming files and directories...") + + # Define rename patterns (order matters - do DEMO first, then Demo, then demo) + rename_patterns = [ + ('DEMO', name_variants['upper']), + ('Demo', name_variants['first']), + ('demo', name_variants['lower']) + ] + + # Collect all paths that need renaming (files and directories) + paths_to_rename = [] + for item in target_dir.rglob('*'): + for old_pattern, new_pattern in rename_patterns: + if old_pattern in item.name: + new_name = item.name.replace(old_pattern, new_pattern) + new_path = item.parent / new_name + paths_to_rename.append((item, new_path)) + break # Only apply the first matching pattern + + # Sort by depth (deepest first) to avoid path conflicts + paths_to_rename.sort(key=lambda x: len(x[0].parts), reverse=True) + + # Perform renames + for old_path, new_path in paths_to_rename: + if old_path.exists() and old_path != new_path: + print(f" Renaming: {old_path.relative_to(target_dir)} -> {new_path.relative_to(target_dir)}") + old_path.rename(new_path) + + +def main(): + parser = argparse.ArgumentParser(description="Generate a new TrySpace component from the demo template") + parser.add_argument('component_name', help='Name of the new component') + parser.add_argument('--source', default='demo', help='Source component to copy from (default: demo)') + + args = parser.parse_args() + + try: + # Validate and normalize component name + component_name = validate_component_name(args.component_name) + name_variants = get_name_variants(component_name) + + print(f"Creating new component: {component_name}") + print(f" Lower case: {name_variants['lower']}") + print(f" First cap: {name_variants['first']}") + print(f" Upper case: {name_variants['upper']}") + print() + + # Determine paths + script_dir = Path(__file__).parent + workspace_dir = script_dir.parent + comp_dir = workspace_dir / 'comp' + source_dir = comp_dir / args.source + target_dir = comp_dir / component_name + + # Validate source directory exists + if not source_dir.exists(): + raise FileNotFoundError(f"Source component '{args.source}' not found at {source_dir}") + + # Create the new component + copy_demo_component(source_dir, target_dir) + replace_content_in_files(target_dir, name_variants) + rename_files_and_dirs(target_dir, name_variants) + + print() + print(f"Component mold creation complete!") + print(f"New component created at: {target_dir}") + print() + print("Next steps:") + print(f" 1. Review the generated component in ./comp/{component_name}") + print(f" 2. Add the component to your active mission, default is ./cfg/drm/drm.yaml") + print(f" 3. Add the component to the FSW definitions:") + print(f" ./fsw/tryspace_defs/cpu1_cfe_es_startup.scr") + print(f" ./fsw/tryspace_defs/tables/sch_def_msgtbl.c") + print(f" ./fsw/tryspace_defs/tables/sch_def_schtbl.c") + print(f" ./fsw/tryspace_defs/tables/to_lab_sub.c") + print(f" ./fsw/tryspace_defs/targets.cmake") + print(f" 4. Add the component to the GSW definitions:") + print(f" ./gsw/src/main/yamcs/etc/etc/yamcs.nos3.yaml") + print(f" 5. Build like you would normally and confirm new component runs") + print(f" 6. Customize the component for your specific needs") + print() + + except Exception as e: + print(f"Error: {e}", file=sys.stderr) + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/cfg/tryspace-config.yaml b/cfg/tryspace-config.yaml index eea3f2b..fbef272 100644 --- a/cfg/tryspace-config.yaml +++ b/cfg/tryspace-config.yaml @@ -4,3 +4,6 @@ build: config_file: "drm/drm.yaml" components: - name: "demo" + - name: "eps" + cli: + - name: "demo" diff --git a/cfg/tryspace-orchestrator.py b/cfg/tryspace-orchestrator.py index 7f935c4..7cb014f 100644 --- a/cfg/tryspace-orchestrator.py +++ b/cfg/tryspace-orchestrator.py @@ -40,13 +40,14 @@ def main(): mission_cfg = load_yaml(mission_cfg_path) scenarios = mission_cfg.get("scenarios", []) scenario = scenarios[0]["name"] if scenarios else "nominal" - active = {"mission": mission, "scenario": scenario} + active = {"mission": mission, "scenario": scenario, "cli": "demo"} with open(ACTIVE_PATH, "w") as f: yaml.safe_dump(active, f) print(f"[orchestrator] Created {ACTIVE_PATH} with defaults: mission={mission}, scenario={scenario}") mission = active.get("mission") scenario = active.get("scenario", "nominal") + cli_component = active.get("cli", "demo") # Find mission config file mission_entry = next((m for m in global_cfg["build"]["missions"] if m["name"] == mission), None) @@ -125,6 +126,20 @@ def main(): else: print(f"[orchestrator] No config or template found for component '{comp_name}', skipping.") + # Render cli-compose.yaml from Jinja2 template using cli_component + cli_template_path = os.path.abspath(os.path.join(CFG_DIR)) + cli_template_file = "cli-compose.j2" + cli_template_full_path = os.path.join(cli_template_path, cli_template_file) + cli_compose_output_path = os.path.join(CFG_DIR, "cli-compose.yaml") + if os.path.exists(cli_template_full_path): + env = Environment(loader=FileSystemLoader(cli_template_path)) + template = env.get_template(cli_template_file) + output = template.render(cli_component=cli_component) + with open(cli_compose_output_path, "w") as f: + f.write(output) + print(f"[orchestrator] cli-compose.yaml written to {cli_compose_output_path} (cli_component={cli_component})") + else: + print(f"[orchestrator] cli-compose.j2 template not found, skipping cli-compose.yaml generation.") if __name__ == "__main__": main() diff --git a/comp/demo b/comp/demo index ff15044..57d5ea1 160000 --- a/comp/demo +++ b/comp/demo @@ -1 +1 @@ -Subproject commit ff150449448af06b91ae6083be220aa06febf749 +Subproject commit 57d5ea1aeb665bfb1c37a2818e1a6d29e283f4f1 diff --git a/comp/eps b/comp/eps new file mode 160000 index 0000000..2e8f87b --- /dev/null +++ b/comp/eps @@ -0,0 +1 @@ +Subproject commit 2e8f87b3e4332174e2ab2c5635b75e8e508cdb62 diff --git a/fsw b/fsw index f9f1a7d..dd35df9 160000 --- a/fsw +++ b/fsw @@ -1 +1 @@ -Subproject commit f9f1a7dad249bc98bba622d2636362b46a9271ef +Subproject commit dd35df945eb69769e1a7324f765203993260dee2 diff --git a/gsw b/gsw index aef7367..b304b47 160000 --- a/gsw +++ b/gsw @@ -1 +1 @@ -Subproject commit aef73672a950f438602b9f0ba6a232dc35879be2 +Subproject commit b304b47ef13ad554efd95b7e0bf310c191998e40 diff --git a/simulith b/simulith index 7356dbc..a62a722 160000 --- a/simulith +++ b/simulith @@ -1 +1 @@ -Subproject commit 7356dbc338bdf5867150a580abea0d124abf47c7 +Subproject commit a62a722010e49a88b24377de1725f1fe0fbc7a48 From d4a8db4b433ffb64019e9f7234159b9a5ac36fd5 Mon Sep 17 00:00:00 2001 From: "John P. Lucas" Date: Sat, 23 Aug 2025 08:01:19 -0400 Subject: [PATCH 02/12] [#27] Radio Component (#52) * [tryspaceorg/tryspace-lab#27] Initial mold for radio from demo component; * [tryspaceorg/tryspace-lab#27] Radio NOOP and HK working with CLI; * [tryspaceorg/tryspace-lab#27] Added radio app to FSW; * [tryspaceorg/tryspace-lab#27] Radio downlink functional; * [tryspaceorg/tryspace-lab#27] Wrapped debug prints in *_CFG_DEBUG statements; * [tryspaceorg/tryspace-lab#27] Updated radio unit tests; * [tryspaceorg/tryspace-lab#27] Added log_mode to default active.yaml; * [tryspaceorg/tryspace-lab#27] Updates after PR reviews; --- .gitignore | 3 ++- .gitmodules | 4 ++++ cfg/drm/drm.yaml | 5 +++-- cfg/drm/scenarios/drm-debug.yaml | 3 +++ cfg/drm/scenarios/drm-flight.yaml | 3 --- cfg/drm/scenarios/drm-nominal.yaml | 1 + cfg/{lab-compose.yaml => lab-compose.j2} | 16 +++++++++------- cfg/tryspace-comp-mold.py | 2 +- cfg/tryspace-orchestrator.py | 19 ++++++++++++++++++- comp/demo | 2 +- comp/eps | 2 +- comp/radio | 1 + fsw | 2 +- gsw | 2 +- simulith | 2 +- 15 files changed, 47 insertions(+), 20 deletions(-) create mode 100644 cfg/drm/scenarios/drm-debug.yaml delete mode 100644 cfg/drm/scenarios/drm-flight.yaml rename cfg/{lab-compose.yaml => lab-compose.j2} (85%) create mode 160000 comp/radio diff --git a/.gitignore b/.gitignore index 8ba3c9e..373794f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ build cfg/active.yaml cfg/build.yaml -cfg/cli-compose.yaml \ No newline at end of file +cfg/cli-compose.yaml +cfg/lab-compose.yaml \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index ee48375..f869daf 100644 --- a/.gitmodules +++ b/.gitmodules @@ -22,3 +22,7 @@ path = comp/eps url = https://github.com/TrySpaceOrg/tryspace-comp-eps.git branch = main +[submodule "comp/radio"] + path = comp/radio + url = https://github.com/TrySpaceOrg/tryspace-comp-radio.git + branch = main diff --git a/cfg/drm/drm.yaml b/cfg/drm/drm.yaml index 0ca2482..5067847 100644 --- a/cfg/drm/drm.yaml +++ b/cfg/drm/drm.yaml @@ -2,8 +2,9 @@ mission_name: "drm" components: - name: "demo" - name: "eps" + - name: "radio" scenarios: - name: "nominal" config_file: "drm/scenarios/drm-nominal.yaml" - - name: "flight" - config_file: "drm/scenarios/drm-flight.yaml" + - name: "debug" + config_file: "drm/scenarios/drm-debug.yaml" diff --git a/cfg/drm/scenarios/drm-debug.yaml b/cfg/drm/scenarios/drm-debug.yaml new file mode 100644 index 0000000..0abfa22 --- /dev/null +++ b/cfg/drm/scenarios/drm-debug.yaml @@ -0,0 +1,3 @@ +scenario_name: "debug" +overrides: + debug: true diff --git a/cfg/drm/scenarios/drm-flight.yaml b/cfg/drm/scenarios/drm-flight.yaml deleted file mode 100644 index 6b7eb17..0000000 --- a/cfg/drm/scenarios/drm-flight.yaml +++ /dev/null @@ -1,3 +0,0 @@ -scenario_name: "flight" -overrides: - debug: false diff --git a/cfg/drm/scenarios/drm-nominal.yaml b/cfg/drm/scenarios/drm-nominal.yaml index bcdd9bb..8f6d597 100644 --- a/cfg/drm/scenarios/drm-nominal.yaml +++ b/cfg/drm/scenarios/drm-nominal.yaml @@ -1,2 +1,3 @@ scenario_name: "nominal" overrides: + debug: false diff --git a/cfg/lab-compose.yaml b/cfg/lab-compose.j2 similarity index 85% rename from cfg/lab-compose.yaml rename to cfg/lab-compose.j2 index 917c325..a235aff 100644 --- a/cfg/lab-compose.yaml +++ b/cfg/lab-compose.j2 @@ -1,9 +1,5 @@ -# Start -# docker compose -f lab-compose.yaml up -# View specific containers -# docker attach tryspace-fsw -# docker attach tryspace-director -# docker attach tryspace-server +# lab-compose.j2 +# Jinja2 template for lab-compose.yaml with SIMULITH_LOG_MODE services: tryspace-gsw: image: tryspace-gsw:latest @@ -12,7 +8,7 @@ services: - tryspace-net attach: false ports: - - "8090:8090" # YAMCS Web Interface + - "8090:8090" volumes: - gsw-data:/app/yamcs-data healthcheck: @@ -33,6 +29,7 @@ services: tty: true environment: - NUM_CLIENTS=${NUM_CLIENTS:-2} + - SIMULITH_LOG_MODE=stdout command: ["/bin/sh", "-c", "/app/simulith_server_standalone $${NUM_CLIENTS}"] cpus: "4.0" mem_limit: 2g @@ -50,7 +47,10 @@ services: stdin_open: true tty: true depends_on: + - tryspace-gsw - tryspace-server + environment: + - SIMULITH_LOG_MODE={{ log_mode | default('stdout') }} command: ["/app/simulith_director_standalone"] cpus: "1.0" mem_limit: 512m @@ -69,6 +69,8 @@ services: depends_on: - tryspace-server - tryspace-director + environment: + - SIMULITH_LOG_MODE={{ log_mode | default('stdout') }} sysctls: - fs.mqueue.msg_max=10000 ulimits: diff --git a/cfg/tryspace-comp-mold.py b/cfg/tryspace-comp-mold.py index 621f45d..f768877 100644 --- a/cfg/tryspace-comp-mold.py +++ b/cfg/tryspace-comp-mold.py @@ -199,7 +199,7 @@ def main(): print(f" ./fsw/tryspace_defs/tables/to_lab_sub.c") print(f" ./fsw/tryspace_defs/targets.cmake") print(f" 4. Add the component to the GSW definitions:") - print(f" ./gsw/src/main/yamcs/etc/etc/yamcs.nos3.yaml") + print(f" ./gsw/src/main/yamcs/etc/yamcs.tryspace.yaml") print(f" 5. Build like you would normally and confirm new component runs") print(f" 6. Customize the component for your specific needs") print() diff --git a/cfg/tryspace-orchestrator.py b/cfg/tryspace-orchestrator.py index 7cb014f..312f1d6 100644 --- a/cfg/tryspace-orchestrator.py +++ b/cfg/tryspace-orchestrator.py @@ -40,7 +40,7 @@ def main(): mission_cfg = load_yaml(mission_cfg_path) scenarios = mission_cfg.get("scenarios", []) scenario = scenarios[0]["name"] if scenarios else "nominal" - active = {"mission": mission, "scenario": scenario, "cli": "demo"} + active = {"mission": mission, "scenario": scenario, "cli": "demo", "log_mode": "none"} with open(ACTIVE_PATH, "w") as f: yaml.safe_dump(active, f) print(f"[orchestrator] Created {ACTIVE_PATH} with defaults: mission={mission}, scenario={scenario}") @@ -48,6 +48,7 @@ def main(): mission = active.get("mission") scenario = active.get("scenario", "nominal") cli_component = active.get("cli", "demo") + log_mode = active.get("log", "stdout") # Find mission config file mission_entry = next((m for m in global_cfg["build"]["missions"] if m["name"] == mission), None) @@ -126,6 +127,7 @@ def main(): else: print(f"[orchestrator] No config or template found for component '{comp_name}', skipping.") + # Render cli-compose.yaml from Jinja2 template using cli_component cli_template_path = os.path.abspath(os.path.join(CFG_DIR)) cli_template_file = "cli-compose.j2" @@ -141,5 +143,20 @@ def main(): else: print(f"[orchestrator] cli-compose.j2 template not found, skipping cli-compose.yaml generation.") + # Render lab-compose.yaml from Jinja2 template using log_mode + lab_template_path = os.path.abspath(os.path.join(CFG_DIR)) + lab_template_file = "lab-compose.j2" + lab_template_full_path = os.path.join(lab_template_path, lab_template_file) + lab_compose_output_path = os.path.join(CFG_DIR, "lab-compose.yaml") + if os.path.exists(lab_template_full_path): + env = Environment(loader=FileSystemLoader(lab_template_path)) + template = env.get_template(lab_template_file) + output = template.render(log_mode=log_mode) + with open(lab_compose_output_path, "w") as f: + f.write(output) + print(f"[orchestrator] lab-compose.yaml written to {lab_compose_output_path} (log_mode={log_mode})") + else: + print(f"[orchestrator] lab-compose.j2 template not found, skipping lab-compose.yaml generation.") + if __name__ == "__main__": main() diff --git a/comp/demo b/comp/demo index 57d5ea1..2c0f06f 160000 --- a/comp/demo +++ b/comp/demo @@ -1 +1 @@ -Subproject commit 57d5ea1aeb665bfb1c37a2818e1a6d29e283f4f1 +Subproject commit 2c0f06fa5ccb0a84a95d3e508da0e8d41680c74e diff --git a/comp/eps b/comp/eps index 2e8f87b..0d5a9dd 160000 --- a/comp/eps +++ b/comp/eps @@ -1 +1 @@ -Subproject commit 2e8f87b3e4332174e2ab2c5635b75e8e508cdb62 +Subproject commit 0d5a9dd217dcc07716757614f6047de0cd3d3359 diff --git a/comp/radio b/comp/radio new file mode 160000 index 0000000..c4ed812 --- /dev/null +++ b/comp/radio @@ -0,0 +1 @@ +Subproject commit c4ed812803b177ddf1157a114b8e267643b04058 diff --git a/fsw b/fsw index dd35df9..a3617ef 160000 --- a/fsw +++ b/fsw @@ -1 +1 @@ -Subproject commit dd35df945eb69769e1a7324f765203993260dee2 +Subproject commit a3617efa0a221a56e3a3f287f93c6600e3989296 diff --git a/gsw b/gsw index b304b47..80e590d 160000 --- a/gsw +++ b/gsw @@ -1 +1 @@ -Subproject commit b304b47ef13ad554efd95b7e0bf310c191998e40 +Subproject commit 80e590da3763db63e9bb6b24813d35c7d44a83e5 diff --git a/simulith b/simulith index a62a722..554c81a 160000 --- a/simulith +++ b/simulith @@ -1 +1 @@ -Subproject commit a62a722010e49a88b24377de1725f1fe0fbc7a48 +Subproject commit 554c81aecbbe2629cf484074bf9e46e96fa5e4f5 From c1bf326ce432d6b8b432f18bbcdae740e7891964 Mon Sep 17 00:00:00 2001 From: "John P. Lucas" Date: Tue, 26 Aug 2025 12:12:16 -0400 Subject: [PATCH 03/12] [tryspaceorg/tryspace-lab#28] Updates to use cryptolib with radio; (#61) * [tryspaceorg/tryspace-lab#28] Updates to use cryptolib with radio; * [tryspaceorg/tryspace-lab#28] Updates for unit tests; * [tryspaceorg/tryspace-lab#28] Update to latest tryspace-lab:0.0.1; * [tryspaceorg/tryspace-lab#28] Update after PR review; --- .github/workflows/ci.yml | 6 +++--- .gitmodules | 4 ++++ Makefile | 3 ++- atlas | 2 +- cfg/Dockerfile.base | 4 +++- cfg/lab-compose.j2 | 23 ++++++++++++++++++++--- cfg/tryspace-orchestrator.py | 2 +- comp/cryptolib | 1 + comp/demo | 2 +- comp/eps | 2 +- comp/radio | 2 +- fsw | 2 +- gsw | 2 +- simulith | 2 +- 14 files changed, 41 insertions(+), 16 deletions(-) create mode 160000 comp/cryptolib diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c3a3441..3e7e9e8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ jobs: build-simulith: runs-on: ubuntu-latest container: - image: tryspaceorg/tryspace-lab:0.0.0 + image: tryspaceorg/tryspace-lab:0.0.1 steps: - name: Checkout repository uses: actions/checkout@v4 @@ -36,7 +36,7 @@ jobs: build-fsw: runs-on: ubuntu-latest container: - image: tryspaceorg/tryspace-lab:0.0.0 + image: tryspaceorg/tryspace-lab:0.0.1 steps: - name: Checkout repository uses: actions/checkout@v4 @@ -53,7 +53,7 @@ jobs: build-test: runs-on: ubuntu-latest container: - image: tryspaceorg/tryspace-lab:0.0.0 + image: tryspaceorg/tryspace-lab:0.0.1 steps: - name: Checkout repository uses: actions/checkout@v4 diff --git a/.gitmodules b/.gitmodules index f869daf..429953e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -26,3 +26,7 @@ path = comp/radio url = https://github.com/TrySpaceOrg/tryspace-comp-radio.git branch = main +[submodule "comp/cryptolib"] + path = comp/cryptolib + url = https://github.com/TrySpaceOrg/tryspace-ext-cryptolib.git + branch = dev diff --git a/Makefile b/Makefile index 7926bdd..1480349 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ .PHONY: build clean clean-cache clean-cli clean-fsw clean-gsw clean-sim cfg cli container debug fsw gsw help mold sim start stop uninstall # Build image name -export BUILD_IMAGE ?= tryspaceorg/tryspace-lab:0.0.0 +export BUILD_IMAGE ?= tryspaceorg/tryspace-lab:0.0.1 # Common paths CFG_DIR := $(CURDIR)/cfg @@ -74,6 +74,7 @@ fsw: cfg cd $(CURDIR)/fsw && $(MAKE) runtime gsw: cfg + cd $(CURDIR)/comp/cryptolib && $(MAKE) tryspace cd $(CURDIR)/gsw && $(MAKE) runtime mold: diff --git a/atlas b/atlas index 960e60c..4f740d1 160000 --- a/atlas +++ b/atlas @@ -1 +1 @@ -Subproject commit 960e60cffa4eab8652d1cc6f82bf94199d05d217 +Subproject commit 4f740d127e1c8d1e149ff70a00010b28e352b217 diff --git a/cfg/Dockerfile.base b/cfg/Dockerfile.base index 0e462fd..a75a5a4 100644 --- a/cfg/Dockerfile.base +++ b/cfg/Dockerfile.base @@ -3,7 +3,7 @@ # # Assumes build using `make container` from top level of tryspace-lab repository # -# docker push tryspaceorg/tryspace-lab:0.0.0 +# docker push tryspaceorg/tryspace-lab:0.0.1 # FROM debian:bookworm-slim@sha256:6ac2c08566499cc2415926653cf2ed7c3aedac445675a013cc09469c9e118fdd @@ -20,6 +20,8 @@ RUN apt-get update && \ git \ gpg \ lcov \ + libcurl4-openssl-dev \ + libgcrypt20-dev \ libsocketcan-dev \ libzmq3-dev \ pkg-config \ diff --git a/cfg/lab-compose.j2 b/cfg/lab-compose.j2 index a235aff..827ebba 100644 --- a/cfg/lab-compose.j2 +++ b/cfg/lab-compose.j2 @@ -51,7 +51,23 @@ services: - tryspace-server environment: - SIMULITH_LOG_MODE={{ log_mode | default('stdout') }} - command: ["/app/simulith_director_standalone"] + cpus: "1.0" + mem_limit: 512m + volumes: + - simulith_ipc:/tmp + tmpfs: + - /dev/shm:noexec,nosuid,size=100m + + tryspace-cryptolib: + image: tryspace-cryptolib:latest + container_name: tryspace-cryptolib + networks: + - tryspace-net + stdin_open: true + tty: true + depends_on: + - tryspace-director + - tryspace-gsw cpus: "1.0" mem_limit: 512m volumes: @@ -67,8 +83,9 @@ services: stdin_open: true tty: true depends_on: - - tryspace-server + - tryspace-cryptolib - tryspace-director + - tryspace-server environment: - SIMULITH_LOG_MODE={{ log_mode | default('stdout') }} sysctls: @@ -84,7 +101,7 @@ services: tmpfs: - /dev/shm:noexec,nosuid,size=1g privileged: false - + networks: tryspace-net: driver: bridge diff --git a/cfg/tryspace-orchestrator.py b/cfg/tryspace-orchestrator.py index 312f1d6..7e9d8fb 100644 --- a/cfg/tryspace-orchestrator.py +++ b/cfg/tryspace-orchestrator.py @@ -48,7 +48,7 @@ def main(): mission = active.get("mission") scenario = active.get("scenario", "nominal") cli_component = active.get("cli", "demo") - log_mode = active.get("log", "stdout") + log_mode = active.get("log", "none") # Find mission config file mission_entry = next((m for m in global_cfg["build"]["missions"] if m["name"] == mission), None) diff --git a/comp/cryptolib b/comp/cryptolib new file mode 160000 index 0000000..12fdbd6 --- /dev/null +++ b/comp/cryptolib @@ -0,0 +1 @@ +Subproject commit 12fdbd6db45bedfe65789132834249bf6b64b3da diff --git a/comp/demo b/comp/demo index 2c0f06f..3826e00 160000 --- a/comp/demo +++ b/comp/demo @@ -1 +1 @@ -Subproject commit 2c0f06fa5ccb0a84a95d3e508da0e8d41680c74e +Subproject commit 3826e00efacb6e2d7ed81393467d13b152b0c213 diff --git a/comp/eps b/comp/eps index 0d5a9dd..af75342 160000 --- a/comp/eps +++ b/comp/eps @@ -1 +1 @@ -Subproject commit 0d5a9dd217dcc07716757614f6047de0cd3d3359 +Subproject commit af753422befa617921d4c80b8a2247ef5e0b780b diff --git a/comp/radio b/comp/radio index c4ed812..49cc152 160000 --- a/comp/radio +++ b/comp/radio @@ -1 +1 @@ -Subproject commit c4ed812803b177ddf1157a114b8e267643b04058 +Subproject commit 49cc1529ca3383ef51aaab9f810e3c9d165d7d97 diff --git a/fsw b/fsw index a3617ef..279a89a 160000 --- a/fsw +++ b/fsw @@ -1 +1 @@ -Subproject commit a3617efa0a221a56e3a3f287f93c6600e3989296 +Subproject commit 279a89a882395230ca83e3b395841769bbaacb70 diff --git a/gsw b/gsw index 80e590d..14a536f 160000 --- a/gsw +++ b/gsw @@ -1 +1 @@ -Subproject commit 80e590da3763db63e9bb6b24813d35c7d44a83e5 +Subproject commit 14a536fef33ec18994ef4627c041a67b6dedbf3d diff --git a/simulith b/simulith index 554c81a..ddd56c3 160000 --- a/simulith +++ b/simulith @@ -1 +1 @@ -Subproject commit 554c81aecbbe2629cf484074bf9e46e96fa5e4f5 +Subproject commit ddd56c3bda4e0d1ec71bed8a9384b286cee98c46 From 606883e82ed50c4f2eca7dd9a694c1a9ef3c35ca Mon Sep 17 00:00:00 2001 From: "John P. Lucas" Date: Thu, 28 Aug 2025 07:48:48 -0400 Subject: [PATCH 04/12] [#35] 42 GUI (#62) * [tryspaceorg/tryspace-lab#35] Added 42 truth telemetry; * [tryspaceorg/tryspace-lab#35] Added demo display and procedure; * [tryspaceorg/tryspace-lab#35] Resolved issue with nesting components; * [tryspaceorg/tryspace-lab#35] Submodule updates after PR review; --- Makefile | 1 + comp/demo | 2 +- gsw | 2 +- simulith | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 1480349..c93363a 100644 --- a/Makefile +++ b/Makefile @@ -31,6 +31,7 @@ clean: clean-cache: docker builder prune -f + docker volume rm -f gsw-data simulith_ipc || true clean-cli: @for dir in $(CURDIR)/comp/*/cli ; do \ diff --git a/comp/demo b/comp/demo index 3826e00..8aa39f3 160000 --- a/comp/demo +++ b/comp/demo @@ -1 +1 @@ -Subproject commit 3826e00efacb6e2d7ed81393467d13b152b0c213 +Subproject commit 8aa39f31df4a96876b2d93385b22af13f90cefad diff --git a/gsw b/gsw index 14a536f..4d09ec0 160000 --- a/gsw +++ b/gsw @@ -1 +1 @@ -Subproject commit 14a536fef33ec18994ef4627c041a67b6dedbf3d +Subproject commit 4d09ec0f051ad7d0b44a698a2a0b383cc9247757 diff --git a/simulith b/simulith index ddd56c3..b04112a 160000 --- a/simulith +++ b/simulith @@ -1 +1 @@ -Subproject commit ddd56c3bda4e0d1ec71bed8a9384b286cee98c46 +Subproject commit b04112a3d848ca7d4c3c213079cf881bf037f541 From 4a1fdcb0042aabadb40db0bf5975c9fd490e3d7a Mon Sep 17 00:00:00 2001 From: "John P. Lucas" Date: Mon, 1 Sep 2025 23:00:38 -0400 Subject: [PATCH 05/12] [#20] CF, DS, LC, SC (#63) * [tryspaceorg/tryspace-lab#20] Try to setup CFDP; * [tryspaceorg/tryspace-lab#20] Updates to CFDP: * [tryspaceorg/tryspace-lab#20] CFDP upload EIDs set; * [tryspaceorg/tryspace-lab#20] Class 2 CFDP transactions (manual downlink); * [tryspaceorg/tryspace-lab#20] Updates after submodule merges; --- comp/demo | 2 +- comp/radio | 2 +- fsw | 2 +- gsw | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/comp/demo b/comp/demo index 8aa39f3..b4be441 160000 --- a/comp/demo +++ b/comp/demo @@ -1 +1 @@ -Subproject commit 8aa39f31df4a96876b2d93385b22af13f90cefad +Subproject commit b4be441422893a67b1b5b760519d31eef9b52142 diff --git a/comp/radio b/comp/radio index 49cc152..0a6d029 160000 --- a/comp/radio +++ b/comp/radio @@ -1 +1 @@ -Subproject commit 49cc1529ca3383ef51aaab9f810e3c9d165d7d97 +Subproject commit 0a6d029543a9fba704b6150d60a8ba782684a701 diff --git a/fsw b/fsw index 279a89a..5f315b8 160000 --- a/fsw +++ b/fsw @@ -1 +1 @@ -Subproject commit 279a89a882395230ca83e3b395841769bbaacb70 +Subproject commit 5f315b892672c7c915a298c66b956e002fbadc6c diff --git a/gsw b/gsw index 4d09ec0..9e01c6a 160000 --- a/gsw +++ b/gsw @@ -1 +1 @@ -Subproject commit 4d09ec0f051ad7d0b44a698a2a0b383cc9247757 +Subproject commit 9e01c6a9a6b6b82c6017e8a95798d9eb23660177 From 64473849d3b126bbed345262ff874d10bf493610 Mon Sep 17 00:00:00 2001 From: "John P. Lucas" Date: Wed, 3 Sep 2025 21:44:03 -0400 Subject: [PATCH 06/12] [#25] ADCS Component (#65) * [tryspaceorg/tryspace-lab#25] Added ./comp/adcs submodule * [tryspaceorg/tryspace-lab#25] Initial ADCS; * [tryspaceorg/tryspace-lab#25] ADCS updates to xtce and unit tests; * [tryspaceorg/tryspace-lab#25] Submodule updates after PR review; --- .gitmodules | 4 ++++ cfg/Dockerfile.base | 1 + cfg/drm/drm.yaml | 1 + comp/adcs | 1 + fsw | 2 +- gsw | 2 +- simulith | 2 +- 7 files changed, 10 insertions(+), 3 deletions(-) create mode 160000 comp/adcs diff --git a/.gitmodules b/.gitmodules index 429953e..47ae3e7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -30,3 +30,7 @@ path = comp/cryptolib url = https://github.com/TrySpaceOrg/tryspace-ext-cryptolib.git branch = dev +[submodule "comp/adcs"] + path = comp/adcs + url = https://github.com/TrySpaceOrg/tryspace-comp-adcs.git + branch = main diff --git a/cfg/Dockerfile.base b/cfg/Dockerfile.base index a75a5a4..b59fd6e 100644 --- a/cfg/Dockerfile.base +++ b/cfg/Dockerfile.base @@ -17,6 +17,7 @@ RUN apt-get update && \ cmake \ curl \ gcovr \ + gdb \ git \ gpg \ lcov \ diff --git a/cfg/drm/drm.yaml b/cfg/drm/drm.yaml index 5067847..ccfad0e 100644 --- a/cfg/drm/drm.yaml +++ b/cfg/drm/drm.yaml @@ -1,5 +1,6 @@ mission_name: "drm" components: + - name: "adcs" - name: "demo" - name: "eps" - name: "radio" diff --git a/comp/adcs b/comp/adcs new file mode 160000 index 0000000..6abe233 --- /dev/null +++ b/comp/adcs @@ -0,0 +1 @@ +Subproject commit 6abe2332fcfb44e29426fc68cdf93a2c13f5bfe3 diff --git a/fsw b/fsw index 5f315b8..02cc313 160000 --- a/fsw +++ b/fsw @@ -1 +1 @@ -Subproject commit 5f315b892672c7c915a298c66b956e002fbadc6c +Subproject commit 02cc313de5bb0251088e2e8afb90a1ced06ca388 diff --git a/gsw b/gsw index 9e01c6a..b49aa90 160000 --- a/gsw +++ b/gsw @@ -1 +1 @@ -Subproject commit 9e01c6a9a6b6b82c6017e8a95798d9eb23660177 +Subproject commit b49aa9040de08955ebf84aecca5008403eefcd46 diff --git a/simulith b/simulith index b04112a..8557b30 160000 --- a/simulith +++ b/simulith @@ -1 +1 @@ -Subproject commit b04112a3d848ca7d4c3c213079cf881bf037f541 +Subproject commit 8557b3014fd41fa07caaa33d5d642bb23240637c From e694c12d81842a348a78f56cff1e9432ce541286 Mon Sep 17 00:00:00 2001 From: "John P. Lucas" Date: Mon, 15 Sep 2025 16:14:08 -0400 Subject: [PATCH 07/12] [#29] Design Reference Mission (#66) * [tryspaceorg/tryspace-lab#29] Initial updates from DRM effort; * [tryspaceorg/tryspace-lab#29] Resolved EPS tlm packet offset issue; * [tryspaceorg/tryspace-lab#29] Updated architecture and DRM; * [tryspaceorg/tryspace-lab#29] Updated unit-tests after changes; * [tryspaceorg/tryspace-lab#29] Submodule updates after merges; --- atlas | 2 +- comp/adcs | 2 +- comp/demo | 2 +- comp/eps | 2 +- comp/radio | 2 +- fsw | 2 +- gsw | 2 +- simulith | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/atlas b/atlas index 4f740d1..d87c003 160000 --- a/atlas +++ b/atlas @@ -1 +1 @@ -Subproject commit 4f740d127e1c8d1e149ff70a00010b28e352b217 +Subproject commit d87c0032ba101142c3af55a18204cc0e325a3df5 diff --git a/comp/adcs b/comp/adcs index 6abe233..a470444 160000 --- a/comp/adcs +++ b/comp/adcs @@ -1 +1 @@ -Subproject commit 6abe2332fcfb44e29426fc68cdf93a2c13f5bfe3 +Subproject commit a470444657998ca8c09e48d7211c59f148ebfb97 diff --git a/comp/demo b/comp/demo index b4be441..10f7385 160000 --- a/comp/demo +++ b/comp/demo @@ -1 +1 @@ -Subproject commit b4be441422893a67b1b5b760519d31eef9b52142 +Subproject commit 10f7385dd472d0cf8df3eb7b118c60ef78f6d5f0 diff --git a/comp/eps b/comp/eps index af75342..cb0f001 160000 --- a/comp/eps +++ b/comp/eps @@ -1 +1 @@ -Subproject commit af753422befa617921d4c80b8a2247ef5e0b780b +Subproject commit cb0f001eb3a3c113f8e7ada7cd48bc53f2390fea diff --git a/comp/radio b/comp/radio index 0a6d029..3337195 160000 --- a/comp/radio +++ b/comp/radio @@ -1 +1 @@ -Subproject commit 0a6d029543a9fba704b6150d60a8ba782684a701 +Subproject commit 3337195177756fe99e80eb10a481479dfe7a186d diff --git a/fsw b/fsw index 02cc313..3524d39 160000 --- a/fsw +++ b/fsw @@ -1 +1 @@ -Subproject commit 02cc313de5bb0251088e2e8afb90a1ced06ca388 +Subproject commit 3524d3912c5abc9131684adf51a2a2b595246a8d diff --git a/gsw b/gsw index b49aa90..5f5c3fd 160000 --- a/gsw +++ b/gsw @@ -1 +1 @@ -Subproject commit b49aa9040de08955ebf84aecca5008403eefcd46 +Subproject commit 5f5c3fddae7593738d290f19a7eb6b13699b999a diff --git a/simulith b/simulith index 8557b30..339cd2c 160000 --- a/simulith +++ b/simulith @@ -1 +1 @@ -Subproject commit 8557b3014fd41fa07caaa33d5d642bb23240637c +Subproject commit 339cd2c6f23697a9ca710232f4fdd34f30eda410 From f25b83c0905d32853c1abc37664df6d9c9bf93d2 Mon Sep 17 00:00:00 2001 From: "John P. Lucas" Date: Tue, 16 Sep 2025 10:13:51 -0400 Subject: [PATCH 08/12] [#51] Strict build flags (#67) * [tryspaceorg/tryspace-lab#51] Modifications after CompFlags.cmake improvements; * [tryspaceorg/tryspace-lab#51] Separate flags for unit tests; * [tryspaceorg/tryspace-lab#51] CLI updates for strict flags; * [tryspaceorg/tryspace-lab#54] CLI CI; * [tryspaceorg/tryspace-lab#54] build-cli updated to avoid docker calls; * [tryspaceorg/tryspace-lab#51] Submodule updates after merges; --- .github/workflows/ci.yml | 22 +++++++++++ Makefile | 14 ++++--- comp/CompFlags.cmake | 80 +++++++++++++++++++++++++++------------- comp/adcs | 2 +- comp/demo | 2 +- comp/eps | 2 +- comp/radio | 2 +- fsw | 2 +- simulith | 2 +- 9 files changed, 91 insertions(+), 37 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e7e9e8..8531bc6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,3 +71,25 @@ jobs: with: verbose: true recurse_submodules: true + + build-cli: + runs-on: ubuntu-latest + container: + image: tryspaceorg/tryspace-lab:0.0.1 + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 1 + - name: Build CLI + run: | + cd cfg + python3 tryspace-orchestrator.py + cd .. + for dir in $(pwd)/comp/*/cli ; do + if [ -f "$dir/Makefile" ]; then + echo "Building CLI component in $dir" + make -C "$dir" build-cli || { echo "Failed building $dir"; exit 1; } + fi + done diff --git a/Makefile b/Makefile index c93363a..4dbd933 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ # Makefile for TrySpace Lab development -.PHONY: build clean clean-cache clean-cli clean-fsw clean-gsw clean-sim cfg cli container debug fsw gsw help mold sim start stop uninstall +.PHONY: build clean clean-cache clean-cli clean-fsw clean-gsw clean-sim cfg cli cli-start container debug fsw gsw help mold sim start stop uninstall # Build image name export BUILD_IMAGE ?= tryspaceorg/tryspace-lab:0.0.1 @@ -56,12 +56,13 @@ clean-sim: cli: cfg $(MAKE) container - $(MAKE) sim @for dir in $(CURDIR)/comp/*/cli ; do \ if [ -f "$$dir/Makefile" ]; then \ $(MAKE) -C "$$dir" runtime; \ fi; \ done + +cli-start: cfg docker compose -f ./cfg/cli-compose.yaml up container: cfg/Dockerfile.base @@ -92,8 +93,9 @@ help: @echo "Targets:" @echo " build - Build the full runtime environment" @echo " cfg - Run orchestrator to configure environment" - @echo " cli - Build CLI and start CLI services" - @echo " clean - Remove build artifacts and stop services" + @echo " cli - Build CLI components" + @echo " cli-start - Start CLI compose" + @echo " clean - Remove build artifacts and stop compose" @echo " clean-cache - Clean Docker build cache (frees significant disk space)" @echo " clean-cli - Clean CLI components" @echo " clean-fsw - Clean FSW components" @@ -105,8 +107,8 @@ help: @echo " gsw - Build GSW" @echo " mold - Create new component from demo template (Usage: make mold COMP=)" @echo " sim - Build Simulith and component simulators" - @echo " start - Start lab services" - @echo " stop - Stop lab and CLI services, clean up Docker images" + @echo " start - Start lab compose" + @echo " stop - Stop lab and CLI compose, clean up Docker images" @echo " uninstall - Remove containers, images, volumes, and networks" sim: cfg diff --git a/comp/CompFlags.cmake b/comp/CompFlags.cmake index 3a6455f..dec82ad 100644 --- a/comp/CompFlags.cmake +++ b/comp/CompFlags.cmake @@ -1,31 +1,61 @@ # TrySpace-Lab Component Settings include(CheckCCompilerFlag) -set(TRYSPACE_C_FLAGS - "-Wall" - "-Wextra" - "-Wpedantic" - "-Wformat=2" - "-Wno-discarded-qualifiers" - "-Winline" - "-Wpointer-arith" - "-Wredundant-decls" - "-Wwrite-strings" - "-Wuninitialized" - "-Winit-self" - "-Wswitch-default" - "-Wfloat-equal" - "-Wno-packed" - "-Wno-unused-parameter" - "-Wvariadic-macros" - "-Wvla" - "-Wstrict-overflow" - "-Wstrict-overflow=5" - "-fdiagnostics-show-option" - "-pedantic-errors" - "-fprofile-arcs" - "-ftest-coverage" -) +# Allow callers to skip applying these component flags by setting +# the CMake variable TRYSPACE_SKIP_COMP_FLAGS to TRUE. +if(ENABLE_UNIT_TESTS) + set(TRYSPACE_C_FLAGS + # --- Diagnostics and coverage --- + "-fdiagnostics-show-option" # Show warning/diagnostic option in output + "-fprofile-arcs" # Code coverage (gcov) + "-ftest-coverage" # Code coverage (gcov) + ) +else() + set(TRYSPACE_C_FLAGS + # --- Core warnings and strictness --- + "-Wall" # Enable all common warnings + "-Werror" # Treat warnings as errors + "-Wextra" # Enable extra warnings + "-Wpedantic" # Enforce standard compliance + "-Wformat=2" # Strict format string checking + "-Wconversion" # Warn on implicit type conversions + "-Wsign-conversion" # Warn on sign conversions + "-Wshadow" # Warn about variable shadowing + "-Wpointer-arith" # Warn about pointer arithmetic on void* and function pointers + "-Wcast-align" # Warn about cast alignment issues + "-Wstrict-prototypes" # Warn about missing function prototypes + "-Wmissing-prototypes" # Warn about missing prototypes in files + "-Wmissing-declarations" # Warn about missing declarations + "-Wredundant-decls" # Warn about redundant declarations + "-Wwrite-strings" # Make string literals const char* + "-Wuninitialized" # Warn about uninitialized variables + "-Winit-self" # Warn about variables initialized with themselves + "-Wswitch-default" # Warn if switch statement does not have a default case + "-Wswitch-enum" # Warn if switch on enum does not handle all values + "-Wfloat-equal" # Warn about comparing floating point values for equality + "-Wbad-function-cast" # Warn about bad function casts + + # --- Suppressions and compatibility --- + "-Wno-discarded-qualifiers" # Suppress warnings about discarded qualifiers + "-Wno-packed" # Suppress warnings about packed attribute + "-Wno-unused-parameter" # Suppress warnings about unused parameters + + # --- Overflow and macros --- + "-Wstrict-overflow" # Warn about code that may have strict overflow issues + "-Wstrict-overflow=5" # Maximum strict overflow warnings + "-Wvariadic-macros" # Warn about variadic macros + "-Wvla" # Warn about use of variable length arrays + + # --- Standard enforcement --- + "-pedantic-errors" # Make all pedantic warnings into errors + + # --- Optimization and safety --- + "-O2" # Optimize for speed (use -O3 for max, -Og for debug) + "-std=c99" # Enforce C99 standard (or use -std=c11) + "-D_FORTIFY_SOURCE=2" # Enable buffer overflow protection (if supported) + "-fstack-protector-strong" # Enable stack protection + ) +endif() # Example: Add target-specific flags # if(${TGTNAME} STREQUAL cpu1) diff --git a/comp/adcs b/comp/adcs index a470444..0ac5fa4 160000 --- a/comp/adcs +++ b/comp/adcs @@ -1 +1 @@ -Subproject commit a470444657998ca8c09e48d7211c59f148ebfb97 +Subproject commit 0ac5fa4267aa0ca548dbdf714c165ee6374dc998 diff --git a/comp/demo b/comp/demo index 10f7385..cbd8ac0 160000 --- a/comp/demo +++ b/comp/demo @@ -1 +1 @@ -Subproject commit 10f7385dd472d0cf8df3eb7b118c60ef78f6d5f0 +Subproject commit cbd8ac09d266d6862c14fae2a5516ded496fd4b5 diff --git a/comp/eps b/comp/eps index cb0f001..809b1ba 160000 --- a/comp/eps +++ b/comp/eps @@ -1 +1 @@ -Subproject commit cb0f001eb3a3c113f8e7ada7cd48bc53f2390fea +Subproject commit 809b1ba9cae506dcd36eba7bad1ddface65beb64 diff --git a/comp/radio b/comp/radio index 3337195..444d44b 160000 --- a/comp/radio +++ b/comp/radio @@ -1 +1 @@ -Subproject commit 3337195177756fe99e80eb10a481479dfe7a186d +Subproject commit 444d44bd71a0c41d21473baeb31f683fa1685672 diff --git a/fsw b/fsw index 3524d39..0c2aeca 160000 --- a/fsw +++ b/fsw @@ -1 +1 @@ -Subproject commit 3524d3912c5abc9131684adf51a2a2b595246a8d +Subproject commit 0c2aecae6b50ea65a7c94f594f607e62108ae0a9 diff --git a/simulith b/simulith index 339cd2c..0d0115f 160000 --- a/simulith +++ b/simulith @@ -1 +1 @@ -Subproject commit 339cd2c6f23697a9ca710232f4fdd34f30eda410 +Subproject commit 0d0115f17e2a35ea33c03ca70c3ff15cc6f3140a From 88f56805e24cf3cd563894bc8aa2743e19237718 Mon Sep 17 00:00:00 2001 From: "John P. Lucas" Date: Wed, 17 Sep 2025 10:32:32 -0400 Subject: [PATCH 09/12] [tryspaceorg/tryspace-lab#58] Added backdoor simulator interface; (#68) * [tryspaceorg/tryspace-lab#58] Added backdoor simulator interface; * [tryspaceorg/tryspace-lab#58] Updates after submodule merges; --- comp/demo | 2 +- gsw | 2 +- simulith | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/comp/demo b/comp/demo index cbd8ac0..2456189 160000 --- a/comp/demo +++ b/comp/demo @@ -1 +1 @@ -Subproject commit cbd8ac09d266d6862c14fae2a5516ded496fd4b5 +Subproject commit 245618950afe697208bb5fc08e07d8b4354cd6a1 diff --git a/gsw b/gsw index 5f5c3fd..53a20bb 160000 --- a/gsw +++ b/gsw @@ -1 +1 @@ -Subproject commit 5f5c3fddae7593738d290f19a7eb6b13699b999a +Subproject commit 53a20bb334c4dadd3419252652c6009b081172ed diff --git a/simulith b/simulith index 0d0115f..430d2d9 160000 --- a/simulith +++ b/simulith @@ -1 +1 @@ -Subproject commit 0d0115f17e2a35ea33c03ca70c3ff15cc6f3140a +Subproject commit 430d2d9822c901ec3bf87ac6ad91b4d9f9f76fca From 62e926a37a2f735bac11975d1c50238d40409a58 Mon Sep 17 00:00:00 2001 From: "John P. Lucas" Date: Thu, 18 Sep 2025 08:21:34 -0400 Subject: [PATCH 10/12] [#53] Review and Optimize (#69) * [tryspaceorg/tryspace-lab#53] CMake update to use libsimulith.so; * [tryspaceorg/tryspace-lab#55] Additional tests in simulith; * [tryspaceorg/tryspace-lab#53] Submodule update after merges; --- Makefile | 1 + comp/adcs | 2 +- comp/demo | 2 +- comp/eps | 2 +- comp/radio | 2 +- fsw | 2 +- simulith | 2 +- 7 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 4dbd933..f219476 100644 --- a/Makefile +++ b/Makefile @@ -112,6 +112,7 @@ help: @echo " uninstall - Remove containers, images, volumes, and networks" sim: cfg + cd $(CURDIR)/simulith && $(MAKE) build @for dir in $(CURDIR)/comp/*/sim ; do \ if [ -d "$$dir" ] && [ -f "$$dir/Makefile" ]; then \ echo "Building component in $$dir"; \ diff --git a/comp/adcs b/comp/adcs index 0ac5fa4..c0884d6 160000 --- a/comp/adcs +++ b/comp/adcs @@ -1 +1 @@ -Subproject commit 0ac5fa4267aa0ca548dbdf714c165ee6374dc998 +Subproject commit c0884d6410ff767aacf0e65e841e34ddd2303bc1 diff --git a/comp/demo b/comp/demo index 2456189..153ccc0 160000 --- a/comp/demo +++ b/comp/demo @@ -1 +1 @@ -Subproject commit 245618950afe697208bb5fc08e07d8b4354cd6a1 +Subproject commit 153ccc0e5fa97b792a097017670e42beaf345af8 diff --git a/comp/eps b/comp/eps index 809b1ba..966c76a 160000 --- a/comp/eps +++ b/comp/eps @@ -1 +1 @@ -Subproject commit 809b1ba9cae506dcd36eba7bad1ddface65beb64 +Subproject commit 966c76a6533094bc90a4025b550f10f0c2ba324b diff --git a/comp/radio b/comp/radio index 444d44b..5b5443a 160000 --- a/comp/radio +++ b/comp/radio @@ -1 +1 @@ -Subproject commit 444d44bd71a0c41d21473baeb31f683fa1685672 +Subproject commit 5b5443a1c5e127b5156f1ec3c9f4a06b743e8370 diff --git a/fsw b/fsw index 0c2aeca..a026b5a 160000 --- a/fsw +++ b/fsw @@ -1 +1 @@ -Subproject commit 0c2aecae6b50ea65a7c94f594f607e62108ae0a9 +Subproject commit a026b5a3d6366f59015f3e9f01f3a4383328ae1d diff --git a/simulith b/simulith index 430d2d9..9d051a6 160000 --- a/simulith +++ b/simulith @@ -1 +1 @@ -Subproject commit 430d2d9822c901ec3bf87ac6ad91b4d9f9f76fca +Subproject commit 9d051a6398562298fc0ef565d4f965837d15c1e6 From 25b13e6fa863a02e1f0c421b0e00d1f305c786c7 Mon Sep 17 00:00:00 2001 From: "John P. Lucas" Date: Wed, 24 Sep 2025 10:42:44 -0400 Subject: [PATCH 11/12] [#30] Multiple Configurations (#70) * [#30] Orchestrator support for spacecraft; * [tryspaceorg/tryspace-lab#30] Moved tryspace_defs from fsw to cfg; * [tryspaceorg/tryspace-lab#30] Support spacecraft builds; * [tryspaceorg/tryspace-lab#30] Support spacecraft fsw cfgs; * [tryspaceorg/tryspace-lab#30] Mission and spacecraft build directories; * [tryspaceorg/tryspace-lab#30] Mission and spacecraft in runtime name; * [tryspaceorg/tryspace-lab#30] Address missing active.yaml configuration defaults; * [tryspaceorg/tryspace-lab#30] Address missing parameters for FSW CI; * [tryspaceorg/tryspace-lab#30] Look for libsimulith.so in multiple places for runtime; * [tryspaceorg/tryspace-lab#30] Search for perfids.h in the right location; * [tryspaceorg/tryspace-lab#30] Spacecraft FSW cfg now tryspace_defs; * [tryspaceorg/tryspace-lab#30] Rename the mission configuration to the default; * [tryspaceorg/tryspace-lab#30] Submodule updates after merges; --- .github/ISSUE_TEMPLATE/2-FEATURE_REQUEST.yml | 1 - .github/workflows/ci.yml | 8 +- Makefile | 34 +- cfg/drm/drm.yaml | 13 + cfg/drm/spacecraft/flatsat.yaml | 25 + cfg/drm/spacecraft/sat-1.yaml | 32 + cfg/drm/spacecraft/sat-2.yaml | 25 + cfg/lab-compose.j2 | 48 +- cfg/tryspace-config.yaml | 4 +- cfg/tryspace-orchestrator.py | 119 +- cfg/tryspace_defs/arch_build_custom.cmake | 39 + cfg/tryspace_defs/cfe_mission_cfg.h | 594 ++++ cfg/tryspace_defs/cpu1_cfe_es_startup.scr | 47 + cfg/tryspace_defs/cpu1_platform_cfg.h | 1752 +++++++++++ cfg/tryspace_defs/default_osconfig.cmake | 59 + cfg/tryspace_defs/eds/cfe-topicids.xml | 133 + cfg/tryspace_defs/eds/config.xml | 585 ++++ cfg/tryspace_defs/global_build_options.cmake | 37 + cfg/tryspace_defs/mission_build_custom.cmake | 28 + cfg/tryspace_defs/native_osconfig.cmake | 58 + cfg/tryspace_defs/perfids.h | 59 + cfg/tryspace_defs/tables/cf_def_config.c | 85 + cfg/tryspace_defs/tables/ds_file_tbl.c | 274 ++ cfg/tryspace_defs/tables/ds_filter_tbl.c | 2144 +++++++++++++ cfg/tryspace_defs/tables/lc_def_adt.c | 2640 +++++++++++++++++ cfg/tryspace_defs/tables/lc_def_wdt.c | 2222 ++++++++++++++ cfg/tryspace_defs/tables/radio_sub.c | 69 + cfg/tryspace_defs/tables/sc_rts001.c | 126 + cfg/tryspace_defs/tables/sc_rts003.c | 81 + cfg/tryspace_defs/tables/sc_rts005.c | 106 + cfg/tryspace_defs/tables/sc_rts006.c | 101 + cfg/tryspace_defs/tables/sch_def_msgtbl.c | 428 +++ cfg/tryspace_defs/tables/sch_def_schtbl.c | 853 ++++++ cfg/tryspace_defs/tables/to_lab_sub.c | 83 + cfg/tryspace_defs/targets.cmake | 78 + cfg/tryspace_defs/toolchain-amd64-linux.cmake | 23 + .../toolchain-amd64-tryspace.cmake | 24 + comp/adcs | 2 +- comp/cryptolib | 2 +- comp/demo | 2 +- comp/eps | 2 +- comp/radio | 2 +- fsw | 2 +- gsw | 2 +- simulith | 2 +- 45 files changed, 12995 insertions(+), 58 deletions(-) create mode 100644 cfg/drm/spacecraft/flatsat.yaml create mode 100644 cfg/drm/spacecraft/sat-1.yaml create mode 100644 cfg/drm/spacecraft/sat-2.yaml create mode 100644 cfg/tryspace_defs/arch_build_custom.cmake create mode 100644 cfg/tryspace_defs/cfe_mission_cfg.h create mode 100644 cfg/tryspace_defs/cpu1_cfe_es_startup.scr create mode 100644 cfg/tryspace_defs/cpu1_platform_cfg.h create mode 100644 cfg/tryspace_defs/default_osconfig.cmake create mode 100644 cfg/tryspace_defs/eds/cfe-topicids.xml create mode 100644 cfg/tryspace_defs/eds/config.xml create mode 100644 cfg/tryspace_defs/global_build_options.cmake create mode 100644 cfg/tryspace_defs/mission_build_custom.cmake create mode 100644 cfg/tryspace_defs/native_osconfig.cmake create mode 100644 cfg/tryspace_defs/perfids.h create mode 100644 cfg/tryspace_defs/tables/cf_def_config.c create mode 100644 cfg/tryspace_defs/tables/ds_file_tbl.c create mode 100644 cfg/tryspace_defs/tables/ds_filter_tbl.c create mode 100644 cfg/tryspace_defs/tables/lc_def_adt.c create mode 100644 cfg/tryspace_defs/tables/lc_def_wdt.c create mode 100644 cfg/tryspace_defs/tables/radio_sub.c create mode 100644 cfg/tryspace_defs/tables/sc_rts001.c create mode 100644 cfg/tryspace_defs/tables/sc_rts003.c create mode 100644 cfg/tryspace_defs/tables/sc_rts005.c create mode 100644 cfg/tryspace_defs/tables/sc_rts006.c create mode 100644 cfg/tryspace_defs/tables/sch_def_msgtbl.c create mode 100644 cfg/tryspace_defs/tables/sch_def_schtbl.c create mode 100644 cfg/tryspace_defs/tables/to_lab_sub.c create mode 100644 cfg/tryspace_defs/targets.cmake create mode 100644 cfg/tryspace_defs/toolchain-amd64-linux.cmake create mode 100644 cfg/tryspace_defs/toolchain-amd64-tryspace.cmake diff --git a/.github/ISSUE_TEMPLATE/2-FEATURE_REQUEST.yml b/.github/ISSUE_TEMPLATE/2-FEATURE_REQUEST.yml index a85689f..eda7cd1 100644 --- a/.github/ISSUE_TEMPLATE/2-FEATURE_REQUEST.yml +++ b/.github/ISSUE_TEMPLATE/2-FEATURE_REQUEST.yml @@ -11,7 +11,6 @@ body: label: "Description" value: | Provide details related to the new feature. - render: bash validations: required: true - type: markdown diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8531bc6..2c217ce 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,8 +47,10 @@ jobs: run: | cd cfg python3 tryspace-orchestrator.py + export MISSION=$(python3 -c "import yaml; print(yaml.safe_load(open('active.yaml'))['mission'])") + export SPACECRAFT=$(python3 -c "import yaml; print(yaml.safe_load(open('active.yaml'))['spacecraft'])") cd ../fsw - make build-fsw + MISSION=$MISSION SPACECRAFT=$SPACECRAFT make build-fsw build-test: runs-on: ubuntu-latest @@ -64,8 +66,10 @@ jobs: run: | cd cfg python3 tryspace-orchestrator.py + export MISSION=$(python3 -c "import yaml; print(yaml.safe_load(open('active.yaml'))['mission'])") + export SPACECRAFT=$(python3 -c "import yaml; print(yaml.safe_load(open('active.yaml'))['spacecraft'])") cd ../fsw - make build-test + MISSION=$MISSION SPACECRAFT=$SPACECRAFT make build-test - name: Upload to Codecov uses: codecov/codecov-action@v5 with: diff --git a/Makefile b/Makefile index f219476..c69d42d 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,20 @@ export BUILD_IMAGE ?= tryspaceorg/tryspace-lab:0.0.1 # Common paths CFG_DIR := $(CURDIR)/cfg +# Read spacecraft from active.yaml for unified build directory structure +SPACECRAFT := $(shell grep '^spacecraft:' $(CFG_DIR)/active.yaml 2>/dev/null | sed 's/spacecraft: *//' | tr -d ' ') +MISSION := $(shell grep '^mission:' $(CFG_DIR)/active.yaml 2>/dev/null | sed 's/mission: *//' | tr -d ' ') +ifneq ($(SPACECRAFT),) +ifneq ($(MISSION),) +export BUILDDIR_MISSION := $(CURDIR)/build/$(MISSION)/ +export BUILDDIR_BASE := $(BUILDDIR_MISSION)/$(SPACECRAFT) +export BUILDDIR_SIM := $(BUILDDIR_BASE)/sim +export BUILDDIR_FSW := $(BUILDDIR_BASE)/fsw +export BUILDDIR_GSW := $(BUILDDIR_BASE)/gsw +export BUILDDIR_COMP := $(BUILDDIR_BASE)/comp +endif +endif + # Commands build: cfg $(MAKE) sim @@ -19,10 +33,8 @@ cfg: container clean: $(MAKE) stop @if docker image inspect $(BUILD_IMAGE) >/dev/null 2>&1; then \ - $(MAKE) clean-cli; \ - $(MAKE) clean-fsw; \ + rm -rf $(BUILDDIR_MISSION); \ $(MAKE) clean-gsw; \ - $(MAKE) clean-sim; \ docker volume ls -q --filter "name=gsw-data" | xargs -r docker volume rm; \ docker volume ls -q --filter "name=simulith_ipc" | xargs -r docker volume rm; \ else \ @@ -58,7 +70,8 @@ cli: cfg $(MAKE) container @for dir in $(CURDIR)/comp/*/cli ; do \ if [ -f "$$dir/Makefile" ]; then \ - $(MAKE) -C "$$dir" runtime; \ + comp_name=$$(basename $$(dirname "$$dir")); \ + $(MAKE) -C "$$dir" runtime BUILDDIR=$(BUILDDIR_COMP)/$$comp_name/cli; \ fi; \ done @@ -73,11 +86,11 @@ debug: cfg docker run --rm -it -v $(CURDIR):$(CURDIR) --name "tryspace_fsw_debug" -w $(CURDIR) --user $(shell id -u):$(shell id -g) --sysctl fs.mqueue.msg_max=10000 --ulimit rtprio=99 --cap-add=sys_nice $(BUILD_IMAGE) /bin/bash fsw: cfg - cd $(CURDIR)/fsw && $(MAKE) runtime + cd $(CURDIR)/fsw && $(MAKE) runtime BUILDDIR=$(BUILDDIR_FSW) SPACECRAFT=$(SPACECRAFT) MISSION=$(MISSION) gsw: cfg - cd $(CURDIR)/comp/cryptolib && $(MAKE) tryspace - cd $(CURDIR)/gsw && $(MAKE) runtime + cd $(CURDIR)/comp/cryptolib && $(MAKE) tryspace SPACECRAFT=$(SPACECRAFT) MISSION=$(MISSION) + cd $(CURDIR)/gsw && $(MAKE) runtime BUILDDIR=$(BUILDDIR_GSW) SPACECRAFT=$(SPACECRAFT) MISSION=$(MISSION) mold: @if [ "$(COMP)" = "" ]; then \ @@ -112,14 +125,15 @@ help: @echo " uninstall - Remove containers, images, volumes, and networks" sim: cfg - cd $(CURDIR)/simulith && $(MAKE) build + cd $(CURDIR)/simulith && $(MAKE) build BUILDDIR=$(BUILDDIR_SIM) SPACECRAFT=$(SPACECRAFT) MISSION=$(MISSION) @for dir in $(CURDIR)/comp/*/sim ; do \ if [ -d "$$dir" ] && [ -f "$$dir/Makefile" ]; then \ echo "Building component in $$dir"; \ - $(MAKE) -C "$$dir" build; \ + comp_name=$$(basename $$(dirname "$$dir")); \ + $(MAKE) -C "$$dir" build BUILDDIR=$(BUILDDIR_COMP)/$$comp_name/sim; \ fi; \ done - cd $(CURDIR)/simulith && $(MAKE) director && $(MAKE) server + cd $(CURDIR)/simulith && $(MAKE) director BUILDDIR=$(BUILDDIR_SIM) BUILDDIR_COMP=$(BUILDDIR_COMP) SPACECRAFT=$(SPACECRAFT) MISSION=$(MISSION) && $(MAKE) server BUILDDIR=$(BUILDDIR_SIM) BUILDDIR_COMP=$(BUILDDIR_COMP) SPACECRAFT=$(SPACECRAFT) MISSION=$(MISSION) start: cfg docker compose -f ./cfg/lab-compose.yaml up diff --git a/cfg/drm/drm.yaml b/cfg/drm/drm.yaml index ccfad0e..fcce0b9 100644 --- a/cfg/drm/drm.yaml +++ b/cfg/drm/drm.yaml @@ -1,9 +1,22 @@ mission_name: "drm" + +# Spacecraft configurations +spacecraft: + - name: "flatsat" + config_file: "drm/spacecraft/flatsat.yaml" + - name: "sat-1" + config_file: "drm/spacecraft/sat-1.yaml" + - name: "sat-2" + config_file: "drm/spacecraft/sat-2.yaml" + +# Fallback components if no spacecraft selected components: - name: "adcs" - name: "demo" - name: "eps" - name: "radio" + +# Scenarios for mission operations scenarios: - name: "nominal" config_file: "drm/scenarios/drm-nominal.yaml" diff --git a/cfg/drm/spacecraft/flatsat.yaml b/cfg/drm/spacecraft/flatsat.yaml new file mode 100644 index 0000000..e50c9fd --- /dev/null +++ b/cfg/drm/spacecraft/flatsat.yaml @@ -0,0 +1,25 @@ +spacecraft_name: "flatsat" +spacecraft_id: 0 +components: + - name: "demo" + - name: "eps" + - name: "radio" + +# Specific configuration +demo: + string: "/dev/usart_1" + handle: 1 + baudrate_hz: 115200 + ms_timeout: 250 + +eps: + i2c_bus_id: 0 + i2c_device_addr: 0x1E + i2c_speed: 400000 + ms_timeout: 250 + +radio: + spi_bus: 0 + spi_cs: 0 + gpio_power_pin: 8 + gpio_interrupt_pin: 9 diff --git a/cfg/drm/spacecraft/sat-1.yaml b/cfg/drm/spacecraft/sat-1.yaml new file mode 100644 index 0000000..1428013 --- /dev/null +++ b/cfg/drm/spacecraft/sat-1.yaml @@ -0,0 +1,32 @@ +spacecraft_name: "sat-1" +spacecraft_id: 1 +components: + - name: "adcs" + - name: "demo" + - name: "eps" + - name: "radio" + +# Specific configuration +adcs: + string: "/dev/usart_2" + handle: 2 + baudrate_hz: 115200 + ms_timeout: 250 + +demo: + string: "/dev/usart_5" + handle: 5 + baudrate_hz: 115200 + ms_timeout: 250 + +eps: + i2c_bus_id: 0 + i2c_device_addr: 0x1E + i2c_speed: 400000 + ms_timeout: 250 + +radio: + spi_bus: 1 + spi_cs: 0 + gpio_power_pin: 10 + gpio_interrupt_pin: 11 diff --git a/cfg/drm/spacecraft/sat-2.yaml b/cfg/drm/spacecraft/sat-2.yaml new file mode 100644 index 0000000..c241729 --- /dev/null +++ b/cfg/drm/spacecraft/sat-2.yaml @@ -0,0 +1,25 @@ +spacecraft_name: "sat-2" +spacecraft_id: 2 +components: + - name: "adcs" + - name: "eps" + - name: "radio" + +# Specific configuration +adcs: + string: "/dev/usart_3" + handle: 3 + baudrate_hz: 115200 + ms_timeout: 250 + +eps: + i2c_bus_id: 0 + i2c_device_addr: 0x1F + i2c_speed: 400000 + ms_timeout: 250 + +radio: + spi_bus: 1 + spi_cs: 1 + gpio_power_pin: 12 + gpio_interrupt_pin: 13 diff --git a/cfg/lab-compose.j2 b/cfg/lab-compose.j2 index 827ebba..239c778 100644 --- a/cfg/lab-compose.j2 +++ b/cfg/lab-compose.j2 @@ -1,16 +1,16 @@ # lab-compose.j2 -# Jinja2 template for lab-compose.yaml with SIMULITH_LOG_MODE +# Jinja2 template for lab-compose.yaml with spacecraft-specific images services: tryspace-gsw: - image: tryspace-gsw:latest - container_name: tryspace-gsw + image: tryspace-gsw-{{ mission | default('default') }}:{{ mission | default('default') }}-{{ spacecraft | default('latest') }} + container_name: tryspace-gsw-{{ mission | default('default') }} networks: - - tryspace-net + - tryspace-net-{{ spacecraft | default('default') }} attach: false ports: - "8090:8090" volumes: - - gsw-data:/app/yamcs-data + - gsw-data_{{ mission | default('default') }}:/app/yamcs-data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8090"] interval: 30s @@ -21,10 +21,10 @@ services: mem_limit: 1g tryspace-server: - image: tryspace-server:latest - container_name: tryspace-server + image: tryspace-server-{{ mission | default('default') }}:{{ spacecraft | default('latest') }} + container_name: tryspace-server-{{ spacecraft | default('default') }} networks: - - tryspace-net + - tryspace-net-{{ spacecraft | default('default') }} stdin_open: true tty: true environment: @@ -34,16 +34,16 @@ services: cpus: "4.0" mem_limit: 2g volumes: - - simulith_ipc:/tmp + - simulith_ipc_{{ spacecraft | default('default') }}:/tmp tmpfs: - /dev/shm:noexec,nosuid,size=1g privileged: false tryspace-director: - image: tryspace-director:latest - container_name: tryspace-director + image: tryspace-director-{{ mission | default('default') }}:{{ spacecraft | default('latest') }} + container_name: tryspace-director-{{ spacecraft | default('default') }} networks: - - tryspace-net + - tryspace-net-{{ spacecraft | default('default') }} stdin_open: true tty: true depends_on: @@ -54,15 +54,15 @@ services: cpus: "1.0" mem_limit: 512m volumes: - - simulith_ipc:/tmp + - simulith_ipc_{{ spacecraft | default('default') }}:/tmp tmpfs: - /dev/shm:noexec,nosuid,size=100m tryspace-cryptolib: - image: tryspace-cryptolib:latest - container_name: tryspace-cryptolib + image: tryspace-cryptolib-{{ mission | default('default') }}:{{ spacecraft | default('latest') }} + container_name: tryspace-cryptolib-{{ spacecraft | default('default') }} networks: - - tryspace-net + - tryspace-net-{{ spacecraft | default('default') }} stdin_open: true tty: true depends_on: @@ -71,15 +71,15 @@ services: cpus: "1.0" mem_limit: 512m volumes: - - simulith_ipc:/tmp + - simulith_ipc_{{ spacecraft | default('default') }}:/tmp tmpfs: - /dev/shm:noexec,nosuid,size=100m tryspace-fsw: - image: tryspace-fsw:latest - container_name: tryspace-fsw + image: tryspace-fsw-{{ mission | default('default') }}:{{ spacecraft | default('latest') }} + container_name: tryspace-fsw-{{ spacecraft | default('default') }} networks: - - tryspace-net + - tryspace-net-{{ spacecraft | default('default') }} stdin_open: true tty: true depends_on: @@ -97,17 +97,17 @@ services: cpus: "4.0" mem_limit: 2g volumes: - - simulith_ipc:/tmp + - simulith_ipc_{{ spacecraft | default('default') }}:/tmp tmpfs: - /dev/shm:noexec,nosuid,size=1g privileged: false networks: - tryspace-net: + tryspace-net-{{ spacecraft | default('default') }}: driver: bridge volumes: - simulith_ipc: + simulith_ipc_{{ spacecraft | default('default') }}: driver: local - gsw-data: + gsw-data_{{ mission | default('default') }}: driver: local diff --git a/cfg/tryspace-config.yaml b/cfg/tryspace-config.yaml index fbef272..7bbe01a 100644 --- a/cfg/tryspace-config.yaml +++ b/cfg/tryspace-config.yaml @@ -2,8 +2,10 @@ build: missions: - name: "drm" config_file: "drm/drm.yaml" + spacecraft: + - name: "sat-1" components: - name: "demo" - - name: "eps" + - name: "radio" cli: - name: "demo" diff --git a/cfg/tryspace-orchestrator.py b/cfg/tryspace-orchestrator.py index 7e9d8fb..ed776dc 100644 --- a/cfg/tryspace-orchestrator.py +++ b/cfg/tryspace-orchestrator.py @@ -40,12 +40,21 @@ def main(): mission_cfg = load_yaml(mission_cfg_path) scenarios = mission_cfg.get("scenarios", []) scenario = scenarios[0]["name"] if scenarios else "nominal" - active = {"mission": mission, "scenario": scenario, "cli": "demo", "log_mode": "none"} + + # Default spacecraft selection from global or mission config + if "spacecraft" in global_cfg["build"] and global_cfg["build"]["spacecraft"]: + spacecraft_list = global_cfg["build"]["spacecraft"] + else: + spacecraft_list = mission_cfg.get("spacecraft", []) + spacecraft = spacecraft_list[0]["name"] if spacecraft_list else None + + active = {"mission": mission, "spacecraft": spacecraft, "scenario": scenario, "cli": "demo", "log_mode": "none"} with open(ACTIVE_PATH, "w") as f: yaml.safe_dump(active, f) - print(f"[orchestrator] Created {ACTIVE_PATH} with defaults: mission={mission}, scenario={scenario}") + print(f"[orchestrator] Created {ACTIVE_PATH} with defaults: mission={mission}, spacecraft={spacecraft}, scenario={scenario}") - mission = active.get("mission") + mission = active.get("mission", "drm") + spacecraft = active.get("spacecraft", "sat-1") scenario = active.get("scenario", "nominal") cli_component = active.get("cli", "demo") log_mode = active.get("log", "none") @@ -64,12 +73,26 @@ def main(): scenario_cfg_path = os.path.join(CFG_DIR, os.path.relpath(scenario_entry["config_file"], CFG_DIR)) scenario_cfg = load_yaml(scenario_cfg_path) + # Load spacecraft config if specified + spacecraft_cfg = {} + if spacecraft: + spacecraft_list = mission_cfg.get("spacecraft", []) + spacecraft_entry = next((sc for sc in spacecraft_list if sc["name"] == spacecraft), None) + if not spacecraft_entry: + fail(f"Spacecraft '{spacecraft}' not found in mission config.") + spacecraft_cfg_path = os.path.join(CFG_DIR, os.path.relpath(spacecraft_entry["config_file"], CFG_DIR)) + spacecraft_cfg = load_yaml(spacecraft_cfg_path) + if not spacecraft_cfg: + spacecraft_cfg = {} + # Merge configs (minimal: just collect for now) merged = { "mission": mission, + "spacecraft": spacecraft, "scenario": scenario, "global": global_cfg, "mission_cfg": mission_cfg, + "spacecraft_cfg": spacecraft_cfg, "scenario_cfg": scenario_cfg, } @@ -78,14 +101,20 @@ def main(): yaml.safe_dump(merged, f) print(f"[orchestrator] Merged config written to {BUILD_PATH}") - # Render config files for all components defined in the mission config - components = merged["mission_cfg"].get("components", []) + # Render config files for components + # Determine which components to process based on spacecraft or fallback to mission components + if spacecraft and merged["spacecraft_cfg"]: + components = merged["spacecraft_cfg"].get("components", []) + else: + # Fallback to mission-level components for backward compatibility + components = merged["mission_cfg"].get("components", []) + for comp in components: comp_name = comp.get("name") if not comp_name: continue - # Full cascading merge: fallback -> global -> mission -> scenario -> scenario overrides + # Full cascading merge: fallback -> global -> mission -> spacecraft -> scenario -> scenario overrides # 1. Fallback config fallback_path = os.path.abspath(os.path.join(CFG_DIR, f'../comp/{comp_name}/support/device_config.yaml')) fallback_data = load_yaml(fallback_path) @@ -99,11 +128,16 @@ def main(): mission_cfg_comp = merged["mission_cfg"].get(comp_name, {}) comp_cfg.update(mission_cfg_comp) - # 4. Scenario config + # 4. Spacecraft config (NEW LAYER) + if merged["spacecraft_cfg"]: + spacecraft_cfg_comp = merged["spacecraft_cfg"].get(comp_name, {}) + comp_cfg.update(spacecraft_cfg_comp) + + # 5. Scenario config scenario_cfg_comp = merged["scenario_cfg"].get(comp_name, {}) comp_cfg.update(scenario_cfg_comp) - # 5. Scenario-level 'overrides' dict + # 6. Scenario-level 'overrides' dict overrides = merged["scenario_cfg"].get("overrides", {}) if overrides is None: overrides = {} @@ -127,7 +161,6 @@ def main(): else: print(f"[orchestrator] No config or template found for component '{comp_name}', skipping.") - # Render cli-compose.yaml from Jinja2 template using cli_component cli_template_path = os.path.abspath(os.path.join(CFG_DIR)) cli_template_file = "cli-compose.j2" @@ -143,7 +176,7 @@ def main(): else: print(f"[orchestrator] cli-compose.j2 template not found, skipping cli-compose.yaml generation.") - # Render lab-compose.yaml from Jinja2 template using log_mode + # Render lab-compose.yaml from Jinja2 template using log_mode and spacecraft lab_template_path = os.path.abspath(os.path.join(CFG_DIR)) lab_template_file = "lab-compose.j2" lab_template_full_path = os.path.join(lab_template_path, lab_template_file) @@ -151,12 +184,74 @@ def main(): if os.path.exists(lab_template_full_path): env = Environment(loader=FileSystemLoader(lab_template_path)) template = env.get_template(lab_template_file) - output = template.render(log_mode=log_mode) + output = template.render(log_mode=log_mode, spacecraft=spacecraft, mission=mission) with open(lab_compose_output_path, "w") as f: f.write(output) - print(f"[orchestrator] lab-compose.yaml written to {lab_compose_output_path} (log_mode={log_mode})") + print(f"[orchestrator] lab-compose.yaml written to {lab_compose_output_path} (log_mode={log_mode}, spacecraft={spacecraft})") else: print(f"[orchestrator] lab-compose.j2 template not found, skipping lab-compose.yaml generation.") + # Copy and manipulate spacecraft-specific FSW config files + if spacecraft: + build_cfg_dir = os.path.abspath(os.path.join(CFG_DIR, f'../build/{mission}/{spacecraft}/tryspace_defs')) + baseline_cfg_dir = os.path.abspath(os.path.join(CFG_DIR, 'tryspace_defs')) + os.makedirs(build_cfg_dir, exist_ok=True) + + # Copy all baseline config files to build///cfg + import shutil + for item in os.listdir(baseline_cfg_dir): + s = os.path.join(baseline_cfg_dir, item) + d = os.path.join(build_cfg_dir, item) + if os.path.isdir(s): + if os.path.exists(d): + shutil.rmtree(d) + shutil.copytree(s, d) + else: + shutil.copy2(s, d) + print(f"[orchestrator] Baseline FSW config files copied to {build_cfg_dir}") + + # Manipulate cpu1_cfe_es_startup.scr to remove lines for components not enabled for the spacecraft + startup_scr_path = os.path.join(build_cfg_dir, "cpu1_cfe_es_startup.scr") + enabled_components = set() + # Get enabled components from spacecraft_cfg (preferred) or mission_cfg + if merged["spacecraft_cfg"] and "components" in merged["spacecraft_cfg"]: + enabled_components = set(comp["name"] for comp in merged["spacecraft_cfg"]["components"] if "name" in comp) + elif "components" in merged["mission_cfg"]: + enabled_components = set(comp["name"] for comp in merged["mission_cfg"]["components"] if "name" in comp) + + if os.path.exists(startup_scr_path): + with open(startup_scr_path, "r") as f: + lines = f.readlines() + new_lines = [] + # Only modify lines for spacecraft-specific components (adcs, demo, eps, radio) + spacecraft_apps = {"adcs", "demo", "eps", "radio"} + for line in lines: + # Only process non-comment, non-blank lines before '!' + if line.strip().startswith("!") or not line.strip(): + new_lines.append(line) + continue + # Check for CFE_APP lines for spacecraft-specific components + if line.startswith("CFE_APP"): + parts = [p.strip() for p in line.split(",")] + if len(parts) > 1: + comp_name = parts[1] + if comp_name in spacecraft_apps: + # Only keep if enabled for this spacecraft + if comp_name in enabled_components: + new_lines.append(line) + else: + print(f"[orchestrator] Removing {comp_name} from startup script (not enabled for {spacecraft})") + else: + new_lines.append(line) + else: + new_lines.append(line) + else: + new_lines.append(line) + with open(startup_scr_path, "w") as f: + f.writelines(new_lines) + print(f"[orchestrator] Updated {startup_scr_path} to only include enabled spacecraft components: {sorted(enabled_components)}") + else: + print(f"[orchestrator] {startup_scr_path} not found, skipping manipulation.") + if __name__ == "__main__": main() diff --git a/cfg/tryspace_defs/arch_build_custom.cmake b/cfg/tryspace_defs/arch_build_custom.cmake new file mode 100644 index 0000000..194ec5b --- /dev/null +++ b/cfg/tryspace_defs/arch_build_custom.cmake @@ -0,0 +1,39 @@ +# +# Example arch_build_custom.cmake +# ------------------------------- +# +# This file will be automatically included in the arch-specific build scope +# +# Definitions and options specified here will be used when cross-compiling +# _all_ FSW code for _all_ targets defined in targets.cmake. +# +# Avoid machine-specific code generation options in this file (e.g. -f,-m options); such +# options should be localized to the toolchain file such that they will only be +# included on the machines where they apply. +# +# CAUTION: In heterogeneous environments where different cross compilers are +# used for different CPUs, particularly if from different vendors, it is likely +# that compile options will need to be different as well. +# +# In general, options in this file can only be used in cases where all CPUs use a +# compiler from the same vendor and/or are all GCC based such that they accept similar +# command line options. +# +# This file can alternatively be named as "arch_build_custom_${TARGETSYSTEM}.cmake" +# where ${TARGETSYSTEM} represents the system type, matching the toolchain. +# +# These example options assume a GCC-style toolchain is used for cross compilation, +# and uses the same warning options that are applied at the mission level. +# +add_compile_options( + -std=c99 # Target the C99 standard (without gcc extensions) + -pedantic # Issue all the warnings demanded by strict ISO C + -Wall # Warn about most questionable operations + -Wstrict-prototypes # Warn about missing prototypes + -Wwrite-strings # Warn if not treating string literals as "const" + -Wpointer-arith # Warn about suspicious pointer operations + -Werror # Treat warnings as errors (code should be clean) + -Wno-format-truncation # Inhibit printf-style format truncation warnings + -Wno-stringop-truncation # Inhibit string operation truncation warnings +) + diff --git a/cfg/tryspace_defs/cfe_mission_cfg.h b/cfg/tryspace_defs/cfe_mission_cfg.h new file mode 100644 index 0000000..d031d52 --- /dev/null +++ b/cfg/tryspace_defs/cfe_mission_cfg.h @@ -0,0 +1,594 @@ +/************************************************************************ + * NASA Docket No. GSC-18,719-1, and identified as “core Flight System: Bootes” + * + * Copyright (c) 2020 United States Government as represented by the + * Administrator of the National Aeronautics and Space Administration. + * All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ************************************************************************/ + + /** + * @file + * + * This header file contains the mission configuration parameters and + * typedefs with mission scope. + * + * This provides values for configurable items that affect + * the interface(s) of this module. This includes the CMD/TLM message + * interface, tables definitions, and any other data products that + * serve to exchange information with other entities. + * + * @note It is no longer necessary to provide this file directly in the defs + * directory, but if present, this file is still supported/usable for backward + * compatibility. To use this file, is should be called "cfe_mission_cfg.h". + * + * Going forward, more fine-grained (module/purposes-specific) header files are + * included with each submodule. These may be overridden as necessary, but only + * if a definition within that file needs to be changed from the default. This + * approach will reduce the amount of duplicate/cloned definitions and better + * support alternative build configurations in the future. + * + * Note that if this file is present, the fine-grained header files noted above + * will _not_ be used. + */ + +#ifndef CFE_MISSION_CFG_H +#define CFE_MISSION_CFG_H + +/** +** \cfemissioncfg cFE Maximum length for pathnames within data exchange structures +** +** \par Description: +** The value of this constant dictates the size of pathnames within all structures +** used for external data exchange, such as Software bus messages and table definitions. +** This is typically the same as OS_MAX_PATH_LEN but that is OSAL dependent -- +** and as such it definable on a per-processor/OS basis and hence may be different +** across multiple processors. It is recommended to set this to the value of the +** largest OS_MAX_PATH_LEN in use on any CPU on the mission. +** +** This affects only the layout of command/telemetry messages and table definitions; +** internal allocation may use the platform-specific OS_MAX_PATH_LEN value. +** +** This length must include an extra character for NULL termination. +** +** \par Limits +** All CPUs within the same SB domain (mission) and ground tools must share the +** same definition. +** Note this affects the size of messages, so it must not cause any message +** to exceed the max length. +** +** This value should be kept as a multiple of 4, to maintain alignment of +** any possible neighboring fields without implicit padding. +*/ +#define CFE_MISSION_MAX_PATH_LEN 64 + +/** +** \cfemissioncfg cFE Maximum length for filenames within data exchange structures +** +** \par Description: +** The value of this constant dictates the size of filenames within all structures +** used for external data exchange, such as Software bus messages and table definitions. +** This is typically the same as OS_MAX_FILE_LEN but that is OSAL dependent -- +** and as such it definable on a per-processor/OS basis and hence may be different +** across multiple processors. It is recommended to set this to the value of the +** largest OS_MAX_FILE_LEN in use on any CPU on the mission. +** +** This affects only the layout of command/telemetry messages and table definitions; +** internal allocation may use the platform-specific OS_MAX_FILE_LEN value. +** +** This length must include an extra character for NULL termination. +** +** \par Limits +** All CPUs within the same SB domain (mission) and ground tools must share the +** same definition. +** Note this affects the size of messages, so it must not cause any message +** to exceed the max length. +** +** This value should be kept as a multiple of 4, to maintain alignment of +** any possible neighboring fields without implicit padding. +*/ +#define CFE_MISSION_MAX_FILE_LEN 20 + +/** +** \cfemissioncfg cFE Maximum length for API names within data exchange structures +** +** \par Description: +** The value of this constant dictates the size of filenames within all structures +** used for external data exchange, such as Software bus messages and table definitions. +** This is typically the same as OS_MAX_API_LEN but that is OSAL dependent -- +** and as such it definable on a per-processor/OS basis and hence may be different +** across multiple processors. It is recommended to set this to the value of the +** largest OS_MAX_API_LEN in use on any CPU on the mission. +** +** This affects only the layout of command/telemetry messages and table definitions; +** internal allocation may use the platform-specific OS_MAX_API_LEN value. +** +** This length must include an extra character for NULL termination. +** +** \par Limits +** All CPUs within the same SB domain (mission) must share the same definition +** Note this affects the size of messages, so it must not cause any message +** to exceed the max length. +** +** This value should be kept as a multiple of 4, to maintain alignment of +** any possible neighboring fields without implicit padding. +*/ +#define CFE_MISSION_MAX_API_LEN 20 + +/** +** \cfemissioncfg cFE Maximum number of files in a message/data exchange +** +** \par Description: +** The value of this constant dictates the maximum number of files within all structures +** used for external data exchange, such as Software bus messages and table definitions. +** This is typically the same as OS_MAX_NUM_OPEN_FILES but that is OSAL dependent -- +** and as such it definable on a per-processor/OS basis and hence may be different +** across multiple processors. It is recommended to set this to the value of the +** largest OS_MAX_NUM_OPEN_FILES in use on any CPU on the mission. +** +** This affects only the layout of command/telemetry messages and table definitions; +** internal allocation may use the platform-specific OS_MAX_NUM_OPEN_FILES value. +** +** \par Limits +** All CPUs within the same SB domain (mission) must share the same definition +** Note this affects the size of messages, so it must not cause any message +** to exceed the max length. +** +*/ +#define CFE_MISSION_MAX_NUM_FILES 50 + +/****************************************************************************** + * CFE Executive Services (CFE_ES) Application Public Definitions + * + * This provides default values for configurable items that affect + * the interface(s) of this module. This includes the CMD/TLM message + * interface, tables definitions, and any other data products that + * serve to exchange information with other entities. + * + */ + +/** +** \cfeescfg Mission Max Apps in a message +** +** \par Description: +** Indicates the maximum number of apps in a telemetry housekeeping message +** +** This affects the layout of command/telemetry messages but does not affect run +** time behavior or internal allocation. +** +** \par Limits +** All CPUs within the same SB domain (mission) must share the same definition +** Note this affects the size of messages, so it must not cause any message +** to exceed the max length. +*/ +#define CFE_MISSION_ES_MAX_APPLICATIONS 16 + +/** +** \cfeescfg Define Max Number of Performance IDs for messages +** +** \par Description: +** Defines the maximum number of perf ids allowed in command/telemetry messages +** +** This affects the layout of command/telemetry messages but does not affect run +** time behavior or internal allocation. +** +** \par Limits +** All CPUs within the same SB domain (mission) must share the same definition +** Note this affects the size of messages, so it must not cause any message +** to exceed the max length. +** +*/ +#define CFE_MISSION_ES_PERF_MAX_IDS 128 + +/** \cfeescfg Maximum number of block sizes in pool structures +** +** \par Description: +** The upper limit for the number of block sizes supported in the generic +** pool implementation, which in turn implements the memory pools and CDS. +** This definition is used as the array size with the pool stats structure, +** and therefore should be consistent across all CPUs in a mission, as well +** as with the ground station. +** +** There is also a platform-specific limit which may be fewer than this +** value. +** +** \par Limits: +** Must be at least one. No specific upper limit, but the number is +** anticipated to be reasonably small (i.e. tens, not hundreds). Large +** values have not been tested. +** +** +*/ +#define CFE_MISSION_ES_POOL_MAX_BUCKETS 17 + +/** +** \cfeescfg Maximum Length of CDS Name +** +** \par Description: +** Indicates the maximum length (in characters) of the CDS name ('CDSName') +** portion of a Full CDS Name of the following form: +** "ApplicationName.CDSName" +** +** This length does not need to include an extra character for NULL termination. +** +** \par Limits +** This value should be kept as a multiple of 4, to maintain alignment of +** any possible neighboring fields without implicit padding. +** +*/ +#define CFE_MISSION_ES_CDS_MAX_NAME_LENGTH 16 + +/** +** \cfeescfg Mission Default CRC algorithm +** +** \par Description: +** Indicates the which CRC algorithm should be used as the default +** for verifying the contents of Critical Data Stores and when calculating +** Table Image data integrity values. +** +** \par Limits +** Currently only CFE_ES_CrcType_CRC_16 is supported (see brief in CFE_ES_CrcType_Enum +** definition in cfe_es_api_typedefs.h) +*/ +#ifndef CFE_MISSION_ES_DEFAULT_CRC +#define CFE_MISSION_ES_DEFAULT_CRC CFE_ES_CrcType_CRC_16 +#endif + +/** +** \cfeescfg Maximum Length of Full CDS Name in messages +** +** \par Description: +** Indicates the maximum length (in characters) of the entire CDS name +** of the following form: "ApplicationName.CDSName" +** +** This affects the layout of command/telemetry messages but does not affect run +** time behavior or internal allocation. +** +** \par Limits +** All CPUs within the same SB domain (mission) must share the same definition +** Note this affects the size of messages, so it must not cause any message +** to exceed the max length. +** +** This value should be kept as a multiple of 4, to maintain alignment of +** any possible neighboring fields without implicit padding. +*/ +#define CFE_MISSION_ES_CDS_MAX_FULL_NAME_LEN (CFE_MISSION_ES_CDS_MAX_NAME_LENGTH + CFE_MISSION_MAX_API_LEN + 4) + +#ifndef CFE_OMIT_DEPRECATED_6_8 +/* These names have been converted to an enum in cfe_es_api_typedefs.h */ + +/** \name Checksum/CRC algorithm identifiers */ + +#define CFE_MISSION_ES_CRC_8 CFE_ES_CrcType_CRC_8 /* 1 */ +#define CFE_MISSION_ES_CRC_16 CFE_ES_CrcType_CRC_16 /* 2 */ +#define CFE_MISSION_ES_CRC_32 CFE_ES_CrcType_CRC_32 /* 3 */ + +#endif + +/****************************************************************************** + * CFE Event Services (CFE_EVS) Application Public Definitions + * + * This provides default values for configurable items that affect + * the interface(s) of this module. This includes the CMD/TLM message + * interface, tables definitions, and any other data products that + * serve to exchange information with other entities. + * + */ + +/** +** \cfeevscfg Maximum Event Message Length +** +** \par Description: +** Indicates the maximum length (in characters) of the formatted text +** string portion of an event message +** +** This length does not need to include an extra character for NULL termination. +** +** \par Limits +** Not Applicable +*/ +#define CFE_MISSION_EVS_MAX_MESSAGE_LENGTH 122 + +/****************************************************************************** + * CFE File Services (CFE_FS) Public Definitions + * + */ + +/* + * NOTE: the value of CFE_FS_HDR_DESC_MAX_LEN, if modified, should + * be constrained to multiples of 4, as it is used within a structure that + * also contains uint32 types. This ensures that the entire structure + * remains 32-bit aligned without the need for implicit padding bytes. + */ + +#define CFE_FS_HDR_DESC_MAX_LEN 32 /**< \brief Max length of description field in a standard cFE File Header */ + +#define CFE_FS_FILE_CONTENT_ID 0x63464531 /**< \brief Magic Number for cFE compliant files (= 'cFE1') */ + + +/****************************************************************************** + * CFE Software Bus (CFE_SB) Application Public Definitions + * + * This provides default values for configurable items that affect + * the interface(s) of this module. This includes the CMD/TLM message + * interface, tables definitions, and any other data products that + * serve to exchange information with other entities. + */ + +/** +** \cfesbcfg Maximum SB Message Size +** +** \par Description: +** The following definition dictates the maximum message size allowed on +** the software bus. SB checks the pkt length field in the header of all +** messages sent. If the pkt length field indicates the message is larger +** than this define, SB sends an event and rejects the send. +** +** \par Limits +** This parameter has a lower limit of 6 (CCSDS primary header size). There +** are no restrictions on the upper limit however, the maximum message size is +** system dependent and should be verified. Total message size values that are +** checked against this configuration are defined by a 16 bit data word. +*/ +#define CFE_MISSION_SB_MAX_SB_MSG_SIZE 32768 + +/** +** \cfesbcfg Maximum Number of pipes that SB command/telemetry messages may hold +** +** \par Description: +** Dictates the maximum number of unique Pipes the SB message definitions will hold. +** +** This affects the layout of command/telemetry messages but does not affect run +** time behavior or internal allocation. +** +** \par Limits +** All CPUs within the same SB domain (mission) must share the same definition +** Note this affects the size of messages, so it must not cause any message +** to exceed the max length. +** +*/ +#define CFE_MISSION_SB_MAX_PIPES 64 + +/****************************************************************************** + * CFE Table Services (CFE_TBL) Application Public Definitions + * + * This provides default values for configurable items that affect + * the interface(s) of this module. This includes the CMD/TLM message + * interface, tables definitions, and any other data products that + * serve to exchange information with other entities. + */ + +/** +** \cfetblcfg Maximum Table Name Length +** +** \par Description: +** Indicates the maximum length (in characters) of the table name +** ('TblName') portion of a Full Table Name of the following +** form: "ApplicationName.TblName" +** +** This length does not need to include an extra character for NULL termination. +** +** \par Limits +** This value should be kept as a multiple of 4, to maintain alignment of +** any possible neighboring fields without implicit padding. +*/ +#define CFE_MISSION_TBL_MAX_NAME_LENGTH 16 + +/** +** \cfetblcfg Maximum Length of Full Table Name in messages +** +** \par Description: +** Indicates the maximum length (in characters) of the entire table name +** within software bus messages, in "AppName.TableName" notation. +** +** This affects the layout of command/telemetry messages but does not affect run +** time behavior or internal allocation. +** +** \par Limits +** All CPUs within the same SB domain (mission) must share the same definition +** Note this affects the size of messages, so it must not cause any message +** to exceed the max length. +** +** This value should be kept as a multiple of 4, to maintain alignment of +** any possible neighboring fields without implicit padding. +*/ +#define CFE_MISSION_TBL_MAX_FULL_NAME_LEN (CFE_MISSION_TBL_MAX_NAME_LENGTH + CFE_MISSION_MAX_API_LEN + 4) + + +/****************************************************************************** + * CFE Time Services (CFE_TIME) Application Public Definitions + * + * This provides default values for configurable items that affect + * the interface(s) of this module. This includes the CMD/TLM message + * interface, tables definitions, and any other data products that + * serve to exchange information with other entities. + * + */ + +/** +** \cfetimecfg Default Time Format +** +** \par Description: +** The following definitions select either UTC or TAI as the default +** (mission specific) time format. Although it is possible for an +** application to request time in a specific format, most callers +** should use CFE_TIME_GetTime(), which returns time in the default +** format. This avoids having to modify each individual caller +** when the default choice is changed. +** +** \par Limits +** if CFE_MISSION_TIME_CFG_DEFAULT_TAI is defined as true then CFE_MISSION_TIME_CFG_DEFAULT_UTC must be +** defined as false. +** if CFE_MISSION_TIME_CFG_DEFAULT_TAI is defined as false then CFE_MISSION_TIME_CFG_DEFAULT_UTC must be +** defined as true. +*/ +#define CFE_MISSION_TIME_CFG_DEFAULT_TAI true +#define CFE_MISSION_TIME_CFG_DEFAULT_UTC false + +/** +** \cfetimecfg Default Time Format +** +** \par Description: +** The following definition enables the use of a simulated time at +** the tone signal using a software bus message. +** +** \par Limits +** Not Applicable +*/ +#ifndef CFE_MISSION_TIME_CFG_FAKE_TONE +#define CFE_MISSION_TIME_CFG_FAKE_TONE false +#endif + +/** +** \cfetimecfg Default Time and Tone Order +** +** \par Description: +** Time Services may be configured to expect the time at the tone +** data packet to either precede or follow the tone signal. If the +** time at the tone data packet follows the tone signal, then the +** data within the packet describes what the time "was" at the tone. +** If the time at the tone data packet precedes the tone signal, then +** the data within the packet describes what the time "will be" at +** the tone. One, and only one, of the following symbols must be set to true: +** - CFE_MISSION_TIME_AT_TONE_WAS +** - CFE_MISSION_TIME_AT_TONE_WILL_BE +** Note: If Time Services is defined as using a simulated tone signal +** (see #CFE_MISSION_TIME_CFG_FAKE_TONE above), then the tone data packet +** must follow the tone signal. +** +** \par Limits +** Either CFE_MISSION_TIME_AT_TONE_WAS or CFE_MISSION_TIME_AT_TONE_WILL_BE must be set to true. +** They may not both be true and they may not both be false. +*/ +#define CFE_MISSION_TIME_AT_TONE_WAS true +#define CFE_MISSION_TIME_AT_TONE_WILL_BE false + +/** +** \cfetimecfg Min and Max Time Elapsed +** +** \par Description: +** Based on the definition of Time and Tone Order +** (CFE_MISSION_TIME_AT_TONE_WAS/WILL_BE) either the "time at the tone" signal or +** data packet will follow the other. This definition sets the valid window +** of time for the second of the pair to lag behind the first. Time +** Services will invalidate both the tone and packet if the second does not +** arrive within this window following the first. +** +** For example, if the data packet follows the tone, it might be valid for +** the data packet to arrive between zero and 100,000 micro-seconds after +** the tone. But, if the tone follows the packet, it might be valid +** only if the packet arrived between 200,000 and 700,000 micro-seconds +** before the tone. +** +** Note: units are in micro-seconds +** +** \par Limits +** 0 to 999,999 decimal +*/ +#define CFE_MISSION_TIME_MIN_ELAPSED 0 +#define CFE_MISSION_TIME_MAX_ELAPSED 200000 + +/** +** \cfetimecfg Default Time Values +** +** \par Description: +** Default time values are provided to avoid problems due to time +** calculations performed after startup but before commands can be +** processed. For example, if the default time format is UTC then +** it is important that the sum of MET and STCF always exceed the +** value of Leap Seconds to prevent the UTC time calculation +** (time = MET + STCF - Leap Seconds) from resulting in a negative +** (very large) number.

+** Some past missions have also created known (albeit wrong) default +** timestamps. For example, assume the epoch is defined as Jan 1, 1970 +** and further assume the default time values are set to create a timestamp +** of Jan 1, 2000. Even though the year 2000 timestamps are wrong, it +** may be of value to keep the time within some sort of bounds acceptable +** to the software.

+** Note: Sub-second units are in micro-seconds (0 to 999,999) and +** all values must be defined +** +** \par Limits +** Not Applicable +*/ +#define CFE_MISSION_TIME_DEF_MET_SECS 1000 +#define CFE_MISSION_TIME_DEF_MET_SUBS 0 + +#define CFE_MISSION_TIME_DEF_STCF_SECS 1000000 +#define CFE_MISSION_TIME_DEF_STCF_SUBS 0 + +#define CFE_MISSION_TIME_DEF_LEAPS 37 + +#define CFE_MISSION_TIME_DEF_DELAY_SECS 0 +#define CFE_MISSION_TIME_DEF_DELAY_SUBS 1000 + +/** +** \cfetimecfg Default EPOCH Values +** +** \par Description: +** Default ground time epoch values +** Note: these values are used only by the CFE_TIME_Print() API function +** +** \par Limits +** Year - must be within 136 years +** Day - Jan 1 = 1, Feb 1 = 32, etc. +** Hour - 0 to 23 +** Minute - 0 to 59 +** Second - 0 to 59 +** Micros - 0 to 999999 +*/ +#define CFE_MISSION_TIME_EPOCH_YEAR 1980 +#define CFE_MISSION_TIME_EPOCH_DAY 1 +#define CFE_MISSION_TIME_EPOCH_HOUR 0 +#define CFE_MISSION_TIME_EPOCH_MINUTE 0 +#define CFE_MISSION_TIME_EPOCH_SECOND 0 +#define CFE_MISSION_TIME_EPOCH_MICROS 0 + +/** +** \cfetimecfg Time File System Factor +** +** \par Description: +** Define the s/c vs file system time conversion constant... +** +** Note: this value is intended for use only by CFE TIME API functions to +** convert time values based on the ground system epoch (s/c time) to +** and from time values based on the file system epoch (fs time). +** +** FS time = S/C time + factor +** S/C time = FS time - factor +** +** Worksheet: +** +** S/C epoch = Jan 1, 2005 (LRO ground system epoch) +** FS epoch = Jan 1, 1980 (vxWorks DOS file system epoch) +** +** Delta = 25 years, 0 days, 0 hours, 0 minutes, 0 seconds +** +** Leap years = 1980, 1984, 1988, 1992, 1996, 2000, 2004 +** (divisible by 4 -- except if by 100 -- unless also by 400) +** +** 1 year = 31,536,000 seconds +** 1 day = 86,400 seconds +** 1 hour = 3,600 seconds +** 1 minute = 60 seconds +** +** 25 years = 788,400,000 seconds +** 7 extra leap days = 604,800 seconds +** +** total delta = 789,004,800 seconds +** +** \par Limits +** Not Applicable +*/ +#define CFE_MISSION_TIME_FS_FACTOR 789004800 + +#endif /* CFE_MISSION_CFG_H */ diff --git a/cfg/tryspace_defs/cpu1_cfe_es_startup.scr b/cfg/tryspace_defs/cpu1_cfe_es_startup.scr new file mode 100644 index 0000000..3d40026 --- /dev/null +++ b/cfg/tryspace_defs/cpu1_cfe_es_startup.scr @@ -0,0 +1,47 @@ +CFE_LIB, cryptolib, Crypto_SC_Init, CRYPTOLIB, 0, 0, 0x0, 0; +CFE_LIB, hwlib, hwlib_Init, HW_LIB, 0, 0, 0x0, 0; +CFE_LIB, io_lib, IO_LibInit, IO_LIB, 0, 0, 0x0, 0; + +CFE_APP, cf, CF_AppMain, CF, 40, 32768, 0x0, 0; +CFE_APP, ds, DS_AppMain, DS, 41, 32768, 0x0, 0; +CFE_APP, fm, FM_AppMain, FM, 99, 32768, 0x0, 0; +CFE_APP, lc, LC_AppMain, LC, 43, 16384, 0x0, 0; +CFE_APP, sc, SC_AppMain, SC, 44, 16384, 0x0, 0; +CFE_APP, sch, SCH_AppMain, SCH, 20, 16384, 0x0, 0; + +CFE_APP, adcs, ADCS_AppMain, ADCS_APP, 60, 8192, 0x0, 0; +CFE_APP, demo, DEMO_AppMain, DEMO_APP, 61, 8192, 0x0, 0; +CFE_APP, eps, EPS_AppMain, EPS_APP, 62, 8192, 0x0, 0; +CFE_APP, radio, RADIO_AppMain, RADIO_APP, 63, 32768, 0x0, 0; + +CFE_APP, ci_lab, CI_LAB_AppMain, CI_LAB_APP, 90, 16384, 0x0, 0; +CFE_APP, to_lab, TO_LAB_AppMain, TO_LAB_APP, 91, 16384, 0x0, 0; + +! +! +! Startup script fields: +! 1. Object Type -- CFE_APP for an Application, or CFE_LIB for a library. +! 2. Path/Filename -- This is a cFE Virtual filename, not a vxWorks device/pathname +! 3. Entry Point -- This is the "main" function for Apps. +! 4. CFE Name -- The cFE name for the APP or Library +! 5. Priority -- This is the Priority of the App, not used for Library +! 6. Stack Size -- This is the Stack size for the App, not used for the Library +! 7. Load Address -- This is the Optional Load Address for the App or Library. Currently not implemented +! so keep it at 0x0. +! 8. Exception Action -- This is the Action the cFE should take if the App has an exception. +! 0 = Just restart the Application +! Non-Zero = Do a cFE Processor Reset +! +! Other Notes: +! 1. The software will not try to parse anything after the first '!' character it sees. That +! is the End of File marker. +! 2. Common Application file extensions: +! Linux = .so ( ci.so ) +! OS X = .bundle ( ci.bundle ) +! Cygwin = .dll ( ci.dll ) +! vxWorks = .o ( ci.o ) +! RTEMS with S-record Loader = .s3r ( ci.s3r ) +! RTEMS with CEXP Loader = .o ( ci.o ) +! 3. The filename field (2) no longer requires a fully-qualified filename; the path and extension +! may be omitted. If omitted, the standard virtual path (/cf) and a platform-specific default +! extension will be used, which is derived from the build system. diff --git a/cfg/tryspace_defs/cpu1_platform_cfg.h b/cfg/tryspace_defs/cpu1_platform_cfg.h new file mode 100644 index 0000000..5250fa3 --- /dev/null +++ b/cfg/tryspace_defs/cpu1_platform_cfg.h @@ -0,0 +1,1752 @@ +/************************************************************************ + * NASA Docket No. GSC-18,719-1, and identified as “core Flight System: Bootes” + * + * Copyright (c) 2020 United States Government as represented by the + * Administrator of the National Aeronautics and Space Administration. + * All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ************************************************************************/ + +/** + * @file + * + * This header file contains the internal configuration parameters and + * typedefs with platform scope. + * + * This provides default values for configurable items that do NOT affect + * the interface(s) of this module. This includes internal parameters, + * path names, and limit value(s) that are relevant for a specific platform. + * + * @note It is no longer necessary to provide this file directly in the defs + * directory, but if present, this file is still supported/usable for backward + * compatibility. To use this file, is should be called "cfe_platform_cfg.h". + * + * Going forward, more fine-grained (module/purposes-specific) header files are + * included with each submodule. These may be overridden as necessary, but only + * if a definition within that file needs to be changed from the default. This + * approach will reduce the amount of duplicate/cloned definitions and better + * support alternative build configurations in the future. + * + * Note that if this file is present, the fine-grained header files noted above + * will _not_ be used. + */ + +#ifndef CPU1_PLATFORM_CFG_H +#define CPU1_PLATFORM_CFG_H + +/* Include mission config to get mission-wide constants */ +#include "cfe_mission_cfg.h" + +/*******************************************************************************/ +/* + * CFE Core Private Config Definitions + */ + +/** +** \cfesbcfg Platform Endian Indicator +** +** \par Description: +** The value of this constant indicates the endianess of the target system +** +** \par Limits +** This parameter has a lower limit of 0 and an upper limit of 1. +*/ +#define CFE_PLATFORM_ENDIAN CCSDS_LITTLE_ENDIAN + +/** \cfeescfg CFE core application startup timeout +** +** \par Description: +** The upper limit for the amount of time that the cFE core applications +** (ES, SB, EVS, TIME, TBL) are each allotted to reach their respective +** "ready" states. +** +** The CFE "main" thread starts individual tasks for each of the core applications +** (except FS). Each of these must perform some initialization work before the +** next core application can be started, so the main thread waits to ensure that the +** application has reached the "ready" state before starting the next application. +** +** If any core application fails to start, then it indicates a major problem with +** the system and startup is aborted. +** +** Units are in milliseconds +** +** \par Limits: +** Must be defined as an integer value that is greater than +** or equal to zero. +** +*/ +#define CFE_PLATFORM_CORE_MAX_STARTUP_MSEC 30000 + +/*******************************************************************************/ +/* + * CFE Executive Services (CFE_ES) Application Private Config Definitions + */ + +/** +** \cfeescfg Define ES Task Priority +** +** \par Description: +** Defines the cFE_ES Task priority. +** +** \par Limits +** Not Applicable +*/ +#define CFE_PLATFORM_ES_START_TASK_PRIORITY 68 + +/** +** \cfeescfg Define ES Task Stack Size +** +** \par Description: +** Defines the cFE_ES Task Stack Size +** +** \par Limits +** There is a lower limit of 2048 on this configuration parameter. There +** are no restrictions on the upper limit however, the maximum stack size +** is system dependent and should be verified. Most operating systems provide +** tools for measuring the amount of stack used by a task during operation. It +** is always a good idea to verify that no more than 1/2 of the stack is used. +*/ +#define CFE_PLATFORM_ES_START_TASK_STACK_SIZE CFE_PLATFORM_ES_DEFAULT_STACK_SIZE + +/** +** \cfeescfg Default virtual path for persistent storage +** +** \par Description: +** This configures the default location in the virtual file system +** for persistent/non-volatile storage. Files such as the startup +** script, app/library dynamic modules, and configuration tables are +** expected to be stored in this directory. +** +*/ +#define CFE_PLATFORM_ES_NONVOL_DISK_MOUNT_STRING "/cf" + +/** +** \cfeescfg Default virtual path for volatile storage +** +** \par Description: +** The #CFE_PLATFORM_ES_RAM_DISK_MOUNT_STRING parameter is used to set the cFE mount path +** for the CFE RAM disk. This is a parameter for missions that do not want to +** use the default value of "/ram", or for missions that need to have a different +** value for different CPUs or Spacecraft. +** Note that the vxWorks OSAL cannot currently handle names that have more than one +** path separator in it. The names "/ram", "/ramdisk", "/disk123" will all work, but +** "/disks/ram" will not. +** Multiple separators can be used with the posix or RTEMS ports. +** +*/ +#define CFE_PLATFORM_ES_RAM_DISK_MOUNT_STRING "/ram" + +/** +** \cfeescfg Define Max Number of Applications +** +** \par Description: +** Defines the maximum number of applications that can be loaded into the +** system. This number does not include child tasks. +** +** \par Limits +** There is a lower limit of 6. The lower limit corresponds to the cFE internal +** applications. There are no restrictions on the upper limit however, the +** maximum number of applications is system dependent and should be verified. +** AppIDs that are checked against this configuration are defined by a 32 bit +** data word. +*/ +#define CFE_PLATFORM_ES_MAX_APPLICATIONS 32 + +/** +** \cfeescfg Define Max Number of Shared libraries +** +** \par Description: +** Defines the maximum number of cFE Shared libraries that can be loaded into +** the system. +** +** \par Limits +** There is a lower limit of 1. There are no restrictions on the upper limit +** however, the maximum number of libraries is system dependent and should be +** verified. +*/ +#define CFE_PLATFORM_ES_MAX_LIBRARIES 10 + +/** +** \cfeescfg Define Max Number of ER (Exception and Reset) log entries +** +** \par Description: +** Defines the maximum number of ER (Exception and Reset) log entries +** +** \par Limits +** There is a lower limit of 1. There are no restrictions on the upper limit +** however, the maximum number of log entries is system dependent and should be +** verified. +*/ +#define CFE_PLATFORM_ES_ER_LOG_ENTRIES 20 + +/** \cfeescfg Maximum size of CPU Context in ES Error Log +** +** \par Description: +** This should be large enough to accommodate the CPU context +** information supplied by the PSP on the given platform. +** +** \par Limits: +** Must be greater than zero and a multiple of sizeof(uint32). +** Limited only by the available memory and the number of entries +** in the error log. Any context information beyond this size will +** be truncated. +*/ +#define CFE_PLATFORM_ES_ER_LOG_MAX_CONTEXT_SIZE 256 + +/** +** \cfeescfg Define Size of the cFE System Log. +** +** \par Description: +** Defines the size in bytes of the cFE system log. The system log holds +** variable length strings that are terminated by a linefeed and null +** character. +** +** \par Limits +** There is a lower limit of 512. There are no restrictions on the upper limit +** however, the maximum system log size is system dependent and should be +** verified. +*/ +#define CFE_PLATFORM_ES_SYSTEM_LOG_SIZE 3072 + +/** +** \cfeescfg Define Number of entries in the ES Object table +** +** \par Description: +** Defines the number of entries in the ES Object table. This table controls +** the core cFE startup. +** +** \par Limits +** There is a lower limit of 15. There are no restrictions on the upper limit +** however, the maximum object table size is system dependent and should be +** verified. +*/ +#define CFE_PLATFORM_ES_OBJECT_TABLE_SIZE 30 + +/** +** \cfeescfg Define Max Number of Generic Counters +** +** \par Description: +** Defines the maximum number of Generic Counters that can be registered. +** +** \par Limits +** This parameter has a lower limit of 1 and an upper limit of 65535. +*/ +#define CFE_PLATFORM_ES_MAX_GEN_COUNTERS 8 + +/** +** \cfeescfg Define ES Application Control Scan Rate +** +** \par Description: +** ES Application Control Scan Rate. This parameter controls the speed that ES +** scans the Application Table looking for App Delete/Restart/Reload requests. +** All Applications are deleted, restarted, or reloaded by the ES Application. +** ES will periodically scan for control requests to process. The scan rate is +** controlled by this parameter, which is given in milliseconds. A value of +** 1000 means that ES will scan the Application Table once per second. Be +** careful not to set the value of this too low, because ES will use more CPU +** cycles scanning the table. +** +** \par Limits +** There is a lower limit of 100 and an upper limit of 20000 on this +** configuration parameter. millisecond units. +*/ +#define CFE_PLATFORM_ES_APP_SCAN_RATE 1000 + +/** +** \cfeescfg Define ES Application Kill Timeout +** +** \par Description: +** ES Application Kill Timeout. This parameter controls the number of +** "scan periods" that ES will wait for an application to Exit after getting +** the signal Delete, Reload or Restart. The sequence works as follows: +** -# ES will set the control request for an App to Delete/Restart/Reload and +** set this kill timer to the value in this parameter. +** -# If the App is responding and Calls it's RunLoop function, it will drop out +** of it's main loop and call CFE_ES_ExitApp. Once it calls Exit App, then +** ES can delete, restart, or reload the app the next time it scans the app +** table. +** -# If the App is not responding, the ES App will decrement this Kill Timeout +** value each time it runs. If the timeout value reaches zero, ES will kill +** the app. +** +** The Kill timeout value depends on the #CFE_PLATFORM_ES_APP_SCAN_RATE. If the Scan Rate +** is 1000, or 1 second, and this #CFE_PLATFORM_ES_APP_KILL_TIMEOUT is set to 5, then it +** will take 5 seconds to kill a non-responding App. +** If the Scan Rate is 250, or 1/4 second, and the #CFE_PLATFORM_ES_APP_KILL_TIMEOUT is +** set to 2, then it will take 1/2 second to time out. +** +** \par Limits +** There is a lower limit of 1 and an upper limit of 100 on this configuration +** parameter. Units are number of #CFE_PLATFORM_ES_APP_SCAN_RATE cycles. +*/ +#define CFE_PLATFORM_ES_APP_KILL_TIMEOUT 5 + +/** +** \cfeescfg ES Ram Disk Sector Size +** +** \par Description: +** Defines the ram disk sector size. The ram disk is 1 of 4 memory areas that +** are preserved on a processor reset. +** NOTE: Changing this value changes memory allocation, and may +** require changes to platform specific values (in CFE_PSP) such as +** USER_RESERVED_MEM in VxWorks depending on the memory areas +** being used for preserved data and on OS specific behavior. +** +** \par Limits +** There is a lower limit of 128. There are no restrictions on the upper limit +** however, the maximum RAM disk sector size is system dependent and should be +** verified. +*/ +#define CFE_PLATFORM_ES_RAM_DISK_SECTOR_SIZE 512 + +/** +** \cfeescfg ES Ram Disk Number of Sectors +** +** \par Description: +** Defines the ram disk number of sectors. The ram disk is one of four memory +** areas that are preserved on a processor reset. +** NOTE: Changing this value changes memory allocation, and may +** require changes to platform specific values (in CFE_PSP) such as +** USER_RESERVED_MEM in VxWorks depending on the memory areas +** being used for preserved data and on OS specific behavior. +** +** \par Limits +** There is a lower limit of 128. There are no restrictions on the upper limit +** however, the maximum number of RAM sectors is system dependent and should be +** verified. +*/ +#define CFE_PLATFORM_ES_RAM_DISK_NUM_SECTORS 4096 + +/** +** \cfeescfg Percentage of Ram Disk Reserved for Decompressing Apps +** +** \par Description: +** The #CFE_PLATFORM_ES_RAM_DISK_PERCENT_RESERVED parameter is used to make sure that the +** Volatile ( RAM ) Disk has a defined amount of free space during a processor +** reset. The cFE uses the Volatile disk to decompress cFE applications during +** system startup. If this Volatile disk happens to get filled with logs and +** misc files, then a processor reset may not work, because there will be no +** room to decompress cFE apps. To solve that problem, this parameter sets the +** "Low Water Mark" for disk space on a Processor reset. It should be set to +** allow the largest cFE Application to be decompressed. +** During a Processor reset, if there is not sufficient space left on the disk, +** it will be re-formatted in order to clear up some space. +** +** This feature can be turned OFF by setting the parameter to 0. +** +** \par Limits +** There is a lower limit of 0 and an upper limit of 75 on this configuration +** parameter.Units are percentage. A setting of zero will turn this feature +** off. +*/ +#define CFE_PLATFORM_ES_RAM_DISK_PERCENT_RESERVED 30 + +/** +** \cfeescfg Define Critical Data Store Size +** +** \par Description: +** Defines the Critical Data Store (CDS) area size in bytes size. The CDS is +** one of four memory areas that are preserved during a processor reset. +** NOTE: Changing this value changes memory allocation, and may +** require changes to platform specific values (in CFE_PSP) such as +** USER_RESERVED_MEM in VxWorks depending on the memory areas +** being used for preserved data and on OS specific behavior. +** +** \par Limits +** There is a lower limit of 8192 and an upper limit of UINT_MAX (4 Gigabytes) +** on this configuration parameter. +*/ +#define CFE_PLATFORM_ES_CDS_SIZE (128 * 1024) + +/** +** \cfeescfg Define User Reserved Memory Size +** +** \par Description: +** User Reserved Memory Size. This is the size in bytes of the cFE User +** reserved Memory area. This is a block of memory that is available for cFE +** application use. The address is obtained by calling +** #CFE_PSP_GetUserReservedArea. The User Reserved Memory is one of four memory +** areas that are preserved during a processor reset. +** NOTE: Changing this value changes memory allocation, and may +** require changes to platform specific values (in CFE_PSP) such as +** USER_RESERVED_MEM in VxWorks depending on the memory areas +** being used for preserved data and on OS specific behavior. +** +** \par Limits +** There is a lower limit of 1024 and an upper limit of UINT_MAX (4 Gigabytes) +** on this configuration parameter. +*/ +#define CFE_PLATFORM_ES_USER_RESERVED_SIZE (1024 * 1024) + +/** +** \cfeescfg Define Memory Pool Alignment Size +** +** \par Description: +** Ensures that buffers obtained from a memory pool are aligned +** to a certain minimum block size. Note the allocator will always +** align to the minimum required by the CPU architecture. This may +** be set greater than the CPU requirement as desired for optimal +** performance. +** +** For some architectures/applications it may be beneficial to set this +** to the cache line size of the target CPU, or to use special SIMD +** instructions that require a more stringent memory alignment. +** +** \par Limits +** This must always be a power of 2, as it is used as a binary address mask. +*/ +#define CFE_PLATFORM_ES_MEMPOOL_ALIGN_SIZE_MIN 4 + +/** +** \cfeescfg ES Nonvolatile Startup Filename +** +** \par Description: +** The value of this constant defines the path and name of the file that +** contains a list of modules that will be loaded and started by the cFE after +** the cFE finishes its startup sequence. +** +** \par Limits +** The length of each string, including the NULL terminator cannot exceed the +** #OS_MAX_PATH_LEN value. +*/ +#define CFE_PLATFORM_ES_NONVOL_STARTUP_FILE "/cf/cfe_es_startup.scr" + +/** +** \cfeescfg ES Volatile Startup Filename +** +** \par Description: +** The value of this constant defines the path and name of the file that +** contains a list of modules that will be loaded and started by the cFE after +** the cFE finishes its startup sequence. +** +** \par Limits +** The length of each string, including the NULL terminator cannot exceed the +** #OS_MAX_PATH_LEN value. +*/ +#define CFE_PLATFORM_ES_VOLATILE_STARTUP_FILE "/ram/cfe_es_startup.scr" + +/** +** \cfeescfg Default Application Information Filename +** +** \par Description: +** The value of this constant defines the filename used to store information +** pertaining to all of the Applications that are registered with Executive +** Services. This filename is used only when no filename is specified in the +** the command to query all system apps. +** +** \par Limits +** The length of each string, including the NULL terminator cannot exceed the +** #OS_MAX_PATH_LEN value. +*/ +#define CFE_PLATFORM_ES_DEFAULT_APP_LOG_FILE "/ram/cfe_es_app_info.log" + +/** +** \cfeescfg Default Application Information Filename +** +** \par Description: +** The value of this constant defines the filename used to store information +** pertaining to all of the Applications that are registered with Executive +** Services. This filename is used only when no filename is specified in the +** the command to query all system tasks. +** +** \par Limits +** The length of each string, including the NULL terminator cannot exceed the +** #OS_MAX_PATH_LEN value. +*/ +#define CFE_PLATFORM_ES_DEFAULT_TASK_LOG_FILE "/ram/cfe_es_taskinfo.log" + +/** +** \cfeescfg Default System Log Filename +** +** \par Description: +** The value of this constant defines the filename used to store important +** information (as ASCII text strings) that might not be able to be sent in an +** Event Message. This filename is used only when no filename is specified in +** the command to dump the system log. No file specified in the cmd means the +** first character in the cmd filename is a NULL terminator (zero). +** +** \par Limits +** The length of each string, including the NULL terminator cannot exceed the +** #OS_MAX_PATH_LEN value. +*/ +#define CFE_PLATFORM_ES_DEFAULT_SYSLOG_FILE "/ram/cfe_es_syslog.log" + +/** +** \cfeescfg Default Exception and Reset (ER) Log Filename +** +** \par Description: +** The value of this constant defines the filename used to store the +** Exception and Reset (ER) Log. This filename is used only when no filename is +** specified in the command to dump the ER log. No file specified in the cmd +** means the first character in the cmd filename is a NULL terminator (zero). +** +** \par Limits +** The length of each string, including the NULL terminator cannot exceed the +** #OS_MAX_PATH_LEN value. +*/ +#define CFE_PLATFORM_ES_DEFAULT_ER_LOG_FILE "/ram/cfe_erlog.log" + +/** +** \cfeescfg Default Performance Data Filename +** +** \par Description: +** The value of this constant defines the filename used to store the +** Performance Data. This filename is used only when no filename is specified +** in the command to stop performance data collecting. +** +** \par Limits +** The length of each string, including the NULL terminator cannot exceed the +** #OS_MAX_PATH_LEN value. +*/ +#define CFE_PLATFORM_ES_DEFAULT_PERF_DUMP_FILENAME "/ram/cfe_es_perf.dat" + +/** +** \cfeescfg Default Critical Data Store Registry Filename +** +** \par Description: +** The value of this constant defines the filename used to store the +** Critical Data Store Registry. This filename is used only when no filename is +** specified in the command to stop performance data collecting. +** +** \par Limits +** The length of each string, including the NULL terminator cannot exceed the +** #OS_MAX_PATH_LEN value. +*/ +#define CFE_PLATFORM_ES_DEFAULT_CDS_REG_DUMP_FILE "/ram/cfe_cds_reg.log" + +/** +** \cfeescfg Define Default System Log Mode following Power On Reset +** +** \par Description: +** Defines the default mode for the operation of the ES System log following a power +** on reset. The log may operate in either Overwrite mode = 0, where once the +** log becomes full the oldest message in the log will be overwritten, or +** Discard mode = 1, where once the log becomes full the contents of the log are +** preserved and the new event is discarded. This constant may hold a value of +** either 0 or 1 depending on the desired default. +** Overwrite Mode = 0, Discard Mode = 1. +** +** \par Limits +** There is a lower limit of 0 and an upper limit of 1 on this configuration +** parameter. +*/ +#define CFE_PLATFORM_ES_DEFAULT_POR_SYSLOG_MODE 0 + +/** +** \cfeescfg Define Default System Log Mode following Processor Reset +** +** \par Description: +** Defines the default mode for the operation of the ES System log following a +** processor reset. The log may operate in either Overwrite mode = 0, where once +** the log becomes full the oldest message in the log will be overwritten, or +** Discard mode = 1, where once the log becomes full the contents of the log are +** preserved and the new event is discarded. This constant may hold a value of +** either 0 or 1 depending on the desired default. +** Overwrite Mode = 0, Discard Mode = 1. +** +** \par Limits +** There is a lower limit of 0 and an upper limit of 1 on this configuration +** parameter. +*/ +#define CFE_PLATFORM_ES_DEFAULT_PR_SYSLOG_MODE 1 + +/** +** \cfeescfg Define Max Size of Performance Data Buffer +** +** \par Description: +** Defines the maximum size of the performance data buffer. Units are number of +** performance data entries. An entry is defined by a 32 bit data word followed +** by a 64 bit time stamp. +** +** \par Limits +** There is a lower limit of 1025. There are no restrictions on the upper limit +** however, the maximum buffer size is system dependent and should be verified. +** The units are number of entries. An entry is defined by a 32 bit data word followed +** by a 64 bit time stamp. +*/ +#define CFE_PLATFORM_ES_PERF_DATA_BUFFER_SIZE 10000 + +/** +** \cfeescfg Define Filter Mask Setting for Disabling All Performance Entries +** +** \par Description: +** Defines the filter mask for disabling all performance entries. The value is a +** bit mask. For each bit, 0 means the corresponding entry is disabled and +** 1 means it is enabled. +*/ +#define CFE_PLATFORM_ES_PERF_FILTMASK_NONE 0 + +/** +** \cfeescfg Define Filter Mask Setting for Enabling All Performance Entries +** +** \par Description: +** Defines the filter mask for enabling all performance entries. The value is a +** bit mask. For each bit, 0 means the corresponding entry is disabled and +** 1 means it is enabled. +*/ +#define CFE_PLATFORM_ES_PERF_FILTMASK_ALL ~CFE_PLATFORM_ES_PERF_FILTMASK_NONE + +/** +** \cfeescfg Define Default Filter Mask Setting for Performance Data Buffer +** +** \par Description: +** Defines the default filter mask for the performance data buffer. The value is a +** bit mask. For each bit, 0 means the corresponding entry is disabled and 1 +** means it is enabled. +** +*/ +#define CFE_PLATFORM_ES_PERF_FILTMASK_INIT CFE_PLATFORM_ES_PERF_FILTMASK_ALL + +/** +** \cfeescfg Define Default Filter Trigger Setting for Disabling All Performance Entries +** +** \par Description: +** Defines the default trigger mask for disabling all performance data entries. The value +** is a bit mask. For each bit, 0 means the trigger for the corresponding entry is +** disabled and 1 means it is enabled. +** +*/ +#define CFE_PLATFORM_ES_PERF_TRIGMASK_NONE 0 + +/** +** \cfeescfg Define Filter Trigger Setting for Enabling All Performance Entries +** +** \par Description: +** Defines the trigger mask for enabling all performance data entries. The value is +** a bit mask. For each bit, 0 means the trigger for the corresponding entry is +** disabled and 1 means it is enabled. +** +*/ +#define CFE_PLATFORM_ES_PERF_TRIGMASK_ALL ~CFE_PLATFORM_ES_PERF_TRIGMASK_NONE + +/** +** \cfeescfg Define Default Filter Trigger Setting for Performance Data Buffer +** +** \par Description: +** Defines the default trigger mask for the performance data buffer. The value is a +** 32-bit mask. For each bit, 0 means the trigger for the corresponding entry is +** disabled and 1 means it is enabled. +** +*/ +#define CFE_PLATFORM_ES_PERF_TRIGMASK_INIT CFE_PLATFORM_ES_PERF_TRIGMASK_NONE + +/** +** \cfeescfg Define Performance Analyzer Child Task Priority +** +** \par Description: +** This parameter defines the priority of the child task spawned by the +** Executive Services to write performance data to a file. Lower numbers +** are higher priority, with 1 being the highest priority in the case of a +** child task. +** +** \par Limits +** Valid range for a child task is 1 to 255 however, the priority cannot +** be higher (lower number) than the ES parent application priority. +*/ +#define CFE_PLATFORM_ES_PERF_CHILD_PRIORITY 200 + +/** +** \cfeescfg Define Performance Analyzer Child Task Stack Size +** +** \par Description: +** This parameter defines the stack size of the child task spawned by the +** Executive Services to write performance data to a file. +** +** \par Limits +** It is recommended this parameter be greater than or equal to 4KB. This parameter +** is limited by the maximum value allowed by the data type. In this case, the data +** type is an unsigned 32-bit integer, so the valid range is 0 to 0xFFFFFFFF. +*/ +#define CFE_PLATFORM_ES_PERF_CHILD_STACK_SIZE 4096 + +/** +** \cfeescfg Define Performance Analyzer Child Task Delay +** +** \par Description: +** This parameter defines the delay time (in milliseconds) between performance +** data file writes performed by the Executive Services Performance Analyzer +** Child Task. +** +** \par Limits +** It is recommended this parameter be greater than or equal to 20ms. This parameter +** is limited by the maximum value allowed by the data type. In this case, the data +** type is an unsigned 32-bit integer, so the valid range is 0 to 0xFFFFFFFF. +*/ +#define CFE_PLATFORM_ES_PERF_CHILD_MS_DELAY 20 + +/** +** \cfeescfg Define Performance Analyzer Child Task Number of Entries Between Delay +** +** \par Description: +** This parameter defines the number of performance analyzer entries the Performance +** Analyzer Child Task will write to the file between delays. +** +*/ +#define CFE_PLATFORM_ES_PERF_ENTRIES_BTWN_DLYS 50 + +/** +** \cfeescfg Define Default Stack Size for an Application +** +** \par Description: +** This parameter defines a default stack size. This parameter is used by the +** cFE Core Applications. +** +** \par Limits +** There is a lower limit of 2048. There are no restrictions on the upper limit +** however, the maximum stack size is system dependent and should be verified. +** Most operating systems provide tools for measuring the amount of stack used by a +** task during operation. It is always a good idea to verify that no more than 1/2 +** of the stack is used. +*/ +#define CFE_PLATFORM_ES_DEFAULT_STACK_SIZE 8192 + +/** +** \cfeescfg Define Maximum Number of Registered CDS Blocks +** +** \par Description: +** Maximum number of registered CDS Blocks +** +** \par Limits +** There is a lower limit of 8. There are no restrictions on the upper limit +** however, the maximum number of CDS entries is system dependent and +** should be verified. +*/ +#define CFE_PLATFORM_ES_CDS_MAX_NUM_ENTRIES 512 + +/** +** \cfeescfg Define Number of Processor Resets Before a Power On Reset +** +** \par Description: +** Number of Processor Resets before a Power On Reset is called. If set to 2, +** then 2 processor resets will occur, and the 3rd processor reset will be a +** power on reset instead. +** +** \par Limits +** There is a lower limit of 0. There are no restrictions on the upper limit +** however, the maximum number of processor resets may be system dependent and +** should be verified. +*/ +#define CFE_PLATFORM_ES_MAX_PROCESSOR_RESETS 2 + +/** \cfeescfg Maximum number of block sizes in pool structures +** +** \par Description: +** The upper limit for the number of block sizes supported in the generic +** pool implementation, which in turn implements the memory pools and CDS. +** +** \par Limits: +** Must be at least one. No specific upper limit, but the number is +** anticipated to be reasonably small (i.e. tens, not hundreds). Large +** values have not been tested. +** +** The ES and CDS block size lists must correlate with this value +*/ +#define CFE_PLATFORM_ES_POOL_MAX_BUCKETS 17 + +/** \cfeescfg Maximum number of memory pools +** +** \par Description: +** The upper limit for the number of memory pools that can concurrently +** exist within the system. +** +** The CFE_SB and CFE_TBL core subsystems each define a memory pool. +** +** Individual applications may also create memory pools, so this value +** should be set sufficiently high enough to support the applications +** being used on this platform. +** +** \par Limits: +** Must be at least 2 to support CFE core - SB and TBL pools. No +** specific upper limit. +*/ +#define CFE_PLATFORM_ES_MAX_MEMORY_POOLS 10 + +/** +** \cfeescfg Define Default ES Memory Pool Block Sizes +** +** \par Description: +** Default Intermediate ES Memory Pool Block Sizes. If an application +** is using the CFE_ES Memory Pool APIs (#CFE_ES_PoolCreate, #CFE_ES_PoolCreateNoSem, +** #CFE_ES_GetPoolBuf and #CFE_ES_PutPoolBuf) but finds these sizes +** inappropriate for their use, they may wish to use the #CFE_ES_PoolCreateEx +** API to specify their own intermediate block sizes +** +** \par Limits +** These sizes MUST be increasing and MUST be an integral multiple of 4. Also, +** CFE_PLATFORM_ES_MAX_BLOCK_SIZE must be larger than CFE_MISSION_SB_MAX_SB_MSG_SIZE and both +** CFE_PLATFORM_TBL_MAX_SNGL_TABLE_SIZE and CFE_PLATFORM_TBL_MAX_DBL_TABLE_SIZE. Note that if Table +** Services have been removed from the CFE, the table size limits are still +** enforced although the table size definitions may be reduced. +*/ +#define CFE_PLATFORM_ES_MEM_BLOCK_SIZE_01 8 +#define CFE_PLATFORM_ES_MEM_BLOCK_SIZE_02 16 +#define CFE_PLATFORM_ES_MEM_BLOCK_SIZE_03 32 +#define CFE_PLATFORM_ES_MEM_BLOCK_SIZE_04 48 +#define CFE_PLATFORM_ES_MEM_BLOCK_SIZE_05 64 +#define CFE_PLATFORM_ES_MEM_BLOCK_SIZE_06 96 +#define CFE_PLATFORM_ES_MEM_BLOCK_SIZE_07 128 +#define CFE_PLATFORM_ES_MEM_BLOCK_SIZE_08 160 +#define CFE_PLATFORM_ES_MEM_BLOCK_SIZE_09 256 +#define CFE_PLATFORM_ES_MEM_BLOCK_SIZE_10 512 +#define CFE_PLATFORM_ES_MEM_BLOCK_SIZE_11 1024 +#define CFE_PLATFORM_ES_MEM_BLOCK_SIZE_12 2048 +#define CFE_PLATFORM_ES_MEM_BLOCK_SIZE_13 4096 +#define CFE_PLATFORM_ES_MEM_BLOCK_SIZE_14 8192 +#define CFE_PLATFORM_ES_MEM_BLOCK_SIZE_15 16384 +#define CFE_PLATFORM_ES_MEM_BLOCK_SIZE_16 32768 +#define CFE_PLATFORM_ES_MAX_BLOCK_SIZE 80000 + +/** +** \cfeescfg Define ES Critical Data Store Memory Pool Block Sizes +** +** \par Description: +** Intermediate ES Critical Data Store Memory Pool Block Sizes +** +** \par Limits +** These sizes MUST be increasing and MUST be an integral multiple of 4. +*/ +#define CFE_PLATFORM_ES_CDS_MEM_BLOCK_SIZE_01 8 +#define CFE_PLATFORM_ES_CDS_MEM_BLOCK_SIZE_02 16 +#define CFE_PLATFORM_ES_CDS_MEM_BLOCK_SIZE_03 32 +#define CFE_PLATFORM_ES_CDS_MEM_BLOCK_SIZE_04 48 +#define CFE_PLATFORM_ES_CDS_MEM_BLOCK_SIZE_05 64 +#define CFE_PLATFORM_ES_CDS_MEM_BLOCK_SIZE_06 96 +#define CFE_PLATFORM_ES_CDS_MEM_BLOCK_SIZE_07 128 +#define CFE_PLATFORM_ES_CDS_MEM_BLOCK_SIZE_08 160 +#define CFE_PLATFORM_ES_CDS_MEM_BLOCK_SIZE_09 256 +#define CFE_PLATFORM_ES_CDS_MEM_BLOCK_SIZE_10 512 +#define CFE_PLATFORM_ES_CDS_MEM_BLOCK_SIZE_11 1024 +#define CFE_PLATFORM_ES_CDS_MEM_BLOCK_SIZE_12 2048 +#define CFE_PLATFORM_ES_CDS_MEM_BLOCK_SIZE_13 4096 +#define CFE_PLATFORM_ES_CDS_MEM_BLOCK_SIZE_14 8192 +#define CFE_PLATFORM_ES_CDS_MEM_BLOCK_SIZE_15 16384 +#define CFE_PLATFORM_ES_CDS_MEM_BLOCK_SIZE_16 32768 +#define CFE_PLATFORM_ES_CDS_MAX_BLOCK_SIZE 80000 + +/** \cfeescfg Poll timer for startup sync delay +** +** \par Description: +** During startup, some tasks may need to synchronize their own initialization +** with the initialization of other applications in the system. +** +** CFE ES implements an API to accomplish this, that performs a task delay (sleep) +** while polling the overall system state until other tasks are ready. +** +** This value controls the amount of time that the CFE_ES_ApplicationSyncDelay +** will sleep between each check of the system state. This should be large enough +** to allow other tasks to run, but not so large as to noticeably delay the startup +** completion. +** +** Units are in milliseconds +** +** \par Limits: +** Must be defined as an integer value that is greater than +** or equal to zero. +*/ +#define CFE_PLATFORM_ES_STARTUP_SYNC_POLL_MSEC 250 + +/** \cfeescfg Startup script timeout +** +** \par Description: +** The upper limit for the total amount of time that all apps listed in the CFE ES startup +** script may take to all become ready. +** +** Unlike the "core" app timeout, this is a soft limit; if the allotted time is exceeded, +** it probably indicates an issue with one of the apps, but does not cause CFE ES to take +** any additional action other than logging the event to the syslog. +** +** Units are in milliseconds +** +** \par Limits: +** Must be defined as an integer value that is greater than +** or equal to zero. +*/ +#define CFE_PLATFORM_ES_STARTUP_SCRIPT_TIMEOUT_MSEC 5000 + +/********************************************************************************/ +/* + * CFE Event Services (CFE_EVS) Application Private Config Definitions + */ + +/** +** \cfeescfg Define EVS Task Priority +** +** \par Description: +** Defines the cFE_EVS Task priority. +** +** \par Limits +** Not Applicable +*/ +#define CFE_PLATFORM_EVS_START_TASK_PRIORITY 61 + +/** +** \cfeescfg Define EVS Task Stack Size +** +** \par Description: +** Defines the cFE_EVS Task Stack Size +** +** \par Limits +** There is a lower limit of 2048 on this configuration parameter. There +** are no restrictions on the upper limit however, the maximum stack size +** is system dependent and should be verified. Most operating systems provide +** tools for measuring the amount of stack used by a task during operation. It +** is always a good idea to verify that no more than 1/2 of the stack is used. +*/ +#define CFE_PLATFORM_EVS_START_TASK_STACK_SIZE CFE_PLATFORM_ES_DEFAULT_STACK_SIZE + +/** +** \cfeevscfg Define Maximum Number of Event Filters per Application +** +** \par Description: +** Maximum number of events that may be filtered per application. +** +** \par Limits +** There are no restrictions on the lower and upper limits however, +** the maximum number of event filters is system dependent and should be +** verified. +*/ +#define CFE_PLATFORM_EVS_MAX_EVENT_FILTERS 8 + +/** +** \cfeevscfg Maximum number of event before squelching +** +** \par Description: +** Maximum number of events that may be emitted per app per second. +** Setting this to 0 will cause events to be unrestricted. +** +** \par Limits +** This number must be less than or equal to INT_MAX/1000 +*/ +#define CFE_PLATFORM_EVS_MAX_APP_EVENT_BURST 32 + +/** +** \cfeevscfg Sustained number of event messages per second per app before squelching +** +** \par Description: +** Sustained number of events that may be emitted per app per second. +** +** \par Limits +** This number must be less than or equal to #CFE_PLATFORM_EVS_MAX_APP_EVENT_BURST. +** Values lower than 8 may cause functional and unit test failures. +*/ +#define CFE_PLATFORM_EVS_APP_EVENTS_PER_SEC 15 + +/** +** \cfeevscfg Default Event Log Filename +** +** \par Description: +** The value of this constant defines the filename used to store the Event +** Services local event log. This filename is used only when no filename is +** specified in the command to dump the event log. +** +** \par Limits +** The length of each string, including the NULL terminator cannot exceed the +** #OS_MAX_PATH_LEN value. +*/ +#define CFE_PLATFORM_EVS_DEFAULT_LOG_FILE "/ram/cfe_evs.log" + +/** +** \cfeevscfg Maximum Number of Events in EVS Local Event Log +** +** \par Description: +** Dictates the EVS local event log capacity. Units are the number of events. +** +** \par Limits +** There are no restrictions on the lower and upper limits however, +** the maximum log size is system dependent and should be verified. +*/ +#define CFE_PLATFORM_EVS_LOG_MAX 20 + +/** +** \cfeevscfg Default EVS Application Data Filename +** +** \par Description: +** The value of this constant defines the filename used to store the EVS +** Application Data(event counts/filtering information). This filename is +** used only when no filename is specified in the command to dump the event +** log. +** +** \par Limits +** The length of each string, including the NULL terminator cannot exceed the +** #OS_MAX_PATH_LEN value. +*/ +#define CFE_PLATFORM_EVS_DEFAULT_APP_DATA_FILE "/ram/cfe_evs_app.dat" + +/** +** \cfeevscfg Default EVS Output Port State +** +** \par Description: +** Defines the default port state (enabled or disabled) for the four output +** ports defined within the Event Service. Port 1 is usually the uart output +** terminal. To enable a port, set the proper bit to a 1. Bit 0 is port 1, +** bit 1 is port2 etc. +** +** \par Limits +** The valid settings are 0x0 to 0xF. +*/ +#define CFE_PLATFORM_EVS_PORT_DEFAULT 0x0001 + +/** +** \cfeevscfg Default EVS Event Type Filter Mask +** +** \par Description: +** Defines a state of on or off for all four event types. The term event +** 'type' refers to the criticality level and may be Debug, Informational, +** Error or Critical. Each event type has a bit position. (bit 0 = Debug, +** bit 1 = Info, bit 2 = Error, bit 3 = Critical). This is a global setting, +** meaning it applies to all applications. To filter an event type, set its +** bit to zero. For example, +** 0xE means Debug = OFF, Info = ON, Error = ON, Critical = ON +** +** \par Limits +** The valid settings are 0x0 to 0xF. +*/ +#define CFE_PLATFORM_EVS_DEFAULT_TYPE_FLAG 0xE + +/** +** \cfeevscfg Default EVS Local Event Log Mode +** +** \par Description: +** Defines a state of overwrite(0) or discard(1) for the operation of the +** EVS local event log. The log may operate in either Overwrite mode = 0, +** where once the log becomes full the oldest event in the log will be +** overwritten, or Discard mode = 1, where once the log becomes full the +** contents of the log are preserved and the new event is discarded. +** Overwrite Mode = 0, Discard Mode = 1. +** +** \par Limits +** The valid settings are 0 or 1 +*/ +#define CFE_PLATFORM_EVS_DEFAULT_LOG_MODE 1 + +/** +** \cfeevscfg Default EVS Message Format Mode +** +** \par Description: +** Defines the default message format (long or short) for event messages being +** sent to the ground. Choose between #CFE_EVS_MsgFormat_LONG or +** #CFE_EVS_MsgFormat_SHORT. +** +** \par Limits +** The valid settings are #CFE_EVS_MsgFormat_LONG or #CFE_EVS_MsgFormat_SHORT +*/ +#define CFE_PLATFORM_EVS_DEFAULT_MSG_FORMAT_MODE CFE_EVS_MsgFormat_LONG + +/********************************************************************/ +/* + * CFE Software Bus (CFE_SB) Application Private Config Definitions + */ + +/** +** \cfesbcfg Maximum Number of Unique Message IDs SB Routing Table can hold +** +** \par Description: +** Dictates the maximum number of unique MsgIds the SB routing table will hold. +** This constant has a direct effect on the size of SB's tables and arrays. +** Keeping this count as low as possible will save memory. +** To see the run-time, high-water mark and the current utilization figures +** regarding this parameter, send an SB command to 'Send Statistics Pkt'. +** +** \par Limits +** This must be a power of two if software bus message routing hash implementation +** is being used. Lower than 64 will cause unit test failures, and +** telemetry reporting is impacted below 32. There is no hard +** upper limit, but impacts memory footprint. For software bus message routing +** search implementation the number of msg ids subscribed to impacts performance. +** +*/ +#define CFE_PLATFORM_SB_MAX_MSG_IDS 256 + +/** +** \cfesbcfg Maximum Number of Unique Pipes SB Routing Table can hold +** +** \par Description: +** Dictates the maximum number of unique Pipes the SB routing table will hold. +** This constant has a direct effect on the size of SB's tables and arrays. +** Keeping this count as low as possible will save memory. +** To see the run-time, high-water mark and the current utilization figures +** regarding this parameter, send an SB command to 'Send Statistics Pkt'. +** +** \par Limits +** This parameter has a lower limit of 1. This parameter must also be less than +** or equal to OS_MAX_QUEUES. +** +*/ +#define CFE_PLATFORM_SB_MAX_PIPES 64 + +/** +** \cfesbcfg Maximum Number of unique local destinations a single MsgId can have +** +** \par Description: +** Dictates the maximum number of unique local destinations a single MsgId can +** have. +** +** \par Limits +** This parameter has a lower limit of 1. There are no restrictions on the upper +** limit however, the maximum number of destinations per packet is system dependent +** and should be verified. Destination number values that are checked against this +** configuration are defined by a 16 bit data word. +** +*/ +#define CFE_PLATFORM_SB_MAX_DEST_PER_PKT 16 + +/** +** \cfesbcfg Default Subscription Message Limit +** +** \par Description: +** Dictates the default Message Limit when using the #CFE_SB_Subscribe API. This will +** limit the number of messages with a specific message ID that can be received through +** a subscription. This only changes the default; other message limits can be set on a per +** subscription basis using #CFE_SB_SubscribeEx . +** +** \par Limits +** This parameter has a lower limit of 4 and an upper limit of 65535. +** +*/ +#define CFE_PLATFORM_SB_DEFAULT_MSG_LIMIT 4 + +/** +** \cfesbcfg Size of the SB buffer memory pool +** +** \par Description: +** Dictates the size of the SB memory pool. For each message the SB +** sends, the SB dynamically allocates from this memory pool, the memory needed +** to process the message. The memory needed to process each message is msg +** size + msg descriptor(CFE_SB_BufferD_t). This memory pool is also used +** to allocate destination descriptors (CFE_SB_DestinationD_t) during the +** subscription process. +** To see the run-time, high-water mark and the current utilization figures +** regarding this parameter, send an SB command to 'Send Statistics Pkt'. +** Some memory statistics have been added to the SB housekeeping packet. +** NOTE: It is important to monitor these statistics to ensure the desired +** memory margin is met. +** +** \par Limits +** This parameter has a lower limit of 512 and an upper limit of UINT_MAX (4 Gigabytes). +** +*/ +#define CFE_PLATFORM_SB_BUF_MEMORY_BYTES 524288 + +/** +** \cfesbcfg Highest Valid Message Id +** +** \par Description: +** The value of this constant dictates the range of valid message ID's, from 0 +** to CFE_PLATFORM_SB_HIGHEST_VALID_MSGID (inclusive). +** +** Although this can be defined differently across platforms, each platform can +** only publish/subscribe to message ids within their allowable range. Typically +** this value is set the same across all mission platforms to avoid this complexity. +** +** \par Limits +** This parameter has a lower limit is 1, and an upper limit of 0xFFFFFFFE. +** +** When using the direct message map implementation for software bus routing, this +** value is used to size the map where a value of 0x1FFF results in a 16 KBytes map +** and 0xFFFF is 128 KBytes. +** +** When using the hash implementation for software bus routing, a multiple of the +** CFE_PLATFORM_SB_MAX_MSG_IDS is used to size the message map. In that case +** the range selected here does not impact message map memory use, so it's +** reasonable to use up to the full range supported by the message ID implementation. +*/ +#define CFE_PLATFORM_SB_HIGHEST_VALID_MSGID 0x1FFF + +/** +** \cfesbcfg Default Routing Information Filename +** +** \par Description: +** The value of this constant defines the filename used to store the software +** bus routing information. This filename is used only when no filename is +** specified in the command. +** +** \par Limits +** The length of each string, including the NULL terminator cannot exceed the +** #OS_MAX_PATH_LEN value. +*/ +#define CFE_PLATFORM_SB_DEFAULT_ROUTING_FILENAME "/ram/cfe_sb_route.dat" + +/** +** \cfesbcfg Default Pipe Information Filename +** +** \par Description: +** The value of this constant defines the filename used to store the software +** bus pipe information. This filename is used only when no filename is +** specified in the command. +** +** \par Limits +** The length of each string, including the NULL terminator cannot exceed the +** #OS_MAX_PATH_LEN value. +*/ +#define CFE_PLATFORM_SB_DEFAULT_PIPE_FILENAME "/ram/cfe_sb_pipe.dat" + +/** +** \cfesbcfg Default Message Map Filename +** +** \par Description: +** The value of this constant defines the filename used to store the software +** bus message map information. This filename is used only when no filename is +** specified in the command. The message map is a lookup table (array of 16bit +** words) that has an element for each possible MsgId value and holds the +** routing table index for that MsgId. The Msg Map provides fast access to the +** destinations of a message. +** +** \par Limits +** The length of each string, including the NULL terminator cannot exceed the +** #OS_MAX_PATH_LEN value. +*/ +#define CFE_PLATFORM_SB_DEFAULT_MAP_FILENAME "/ram/cfe_sb_msgmap.dat" + +/** +** \cfesbcfg SB Event Filtering +** +** \par Description: +** This group of configuration parameters dictates what SB events will be +** filtered through SB. The filtering will begin after the SB task initializes +** and stay in effect until a cmd to SB changes it. +** This allows the operator to set limits on the number of event messages that +** are sent during system initialization. +** NOTE: Set all unused event values and mask values to zero +** +** \par Limits +** This filtering applies only to SB events. +** These parameters have a lower limit of 0 and an upper limit of 65535. +*/ +#define CFE_PLATFORM_SB_FILTERED_EVENT1 CFE_SB_SEND_NO_SUBS_EID +#define CFE_PLATFORM_SB_FILTER_MASK1 CFE_EVS_FIRST_4_STOP + +#define CFE_PLATFORM_SB_FILTERED_EVENT2 CFE_SB_DUP_SUBSCRIP_EID +#define CFE_PLATFORM_SB_FILTER_MASK2 CFE_EVS_FIRST_4_STOP + +#define CFE_PLATFORM_SB_FILTERED_EVENT3 CFE_SB_MSGID_LIM_ERR_EID +#define CFE_PLATFORM_SB_FILTER_MASK3 CFE_EVS_FIRST_16_STOP + +#define CFE_PLATFORM_SB_FILTERED_EVENT4 CFE_SB_Q_FULL_ERR_EID +#define CFE_PLATFORM_SB_FILTER_MASK4 CFE_EVS_FIRST_16_STOP + +#define CFE_PLATFORM_SB_FILTERED_EVENT5 0 +#define CFE_PLATFORM_SB_FILTER_MASK5 CFE_EVS_NO_FILTER + +#define CFE_PLATFORM_SB_FILTERED_EVENT6 0 +#define CFE_PLATFORM_SB_FILTER_MASK6 CFE_EVS_NO_FILTER + +#define CFE_PLATFORM_SB_FILTERED_EVENT7 0 +#define CFE_PLATFORM_SB_FILTER_MASK7 CFE_EVS_NO_FILTER + +#define CFE_PLATFORM_SB_FILTERED_EVENT8 0 +#define CFE_PLATFORM_SB_FILTER_MASK8 CFE_EVS_NO_FILTER + +/** +** \cfeescfg Define SB Memory Pool Block Sizes +** +** \par Description: +** Software Bus Memory Pool Block Sizes +** +** \par Limits +** These sizes MUST be increasing and MUST be an integral multiple of 4. +** The number of block sizes defined cannot exceed +** #CFE_PLATFORM_ES_POOL_MAX_BUCKETS +*/ +#define CFE_PLATFORM_SB_MEM_BLOCK_SIZE_01 8 +#define CFE_PLATFORM_SB_MEM_BLOCK_SIZE_02 16 +#define CFE_PLATFORM_SB_MEM_BLOCK_SIZE_03 20 +#define CFE_PLATFORM_SB_MEM_BLOCK_SIZE_04 36 +#define CFE_PLATFORM_SB_MEM_BLOCK_SIZE_05 64 +#define CFE_PLATFORM_SB_MEM_BLOCK_SIZE_06 96 +#define CFE_PLATFORM_SB_MEM_BLOCK_SIZE_07 128 +#define CFE_PLATFORM_SB_MEM_BLOCK_SIZE_08 160 +#define CFE_PLATFORM_SB_MEM_BLOCK_SIZE_09 256 +#define CFE_PLATFORM_SB_MEM_BLOCK_SIZE_10 512 +#define CFE_PLATFORM_SB_MEM_BLOCK_SIZE_11 1024 +#define CFE_PLATFORM_SB_MEM_BLOCK_SIZE_12 2048 +#define CFE_PLATFORM_SB_MEM_BLOCK_SIZE_13 4096 +#define CFE_PLATFORM_SB_MEM_BLOCK_SIZE_14 8192 +#define CFE_PLATFORM_SB_MEM_BLOCK_SIZE_15 16384 +#define CFE_PLATFORM_SB_MEM_BLOCK_SIZE_16 32768 +#define CFE_PLATFORM_SB_MAX_BLOCK_SIZE (CFE_MISSION_SB_MAX_SB_MSG_SIZE + 128) + +/** +** \cfeescfg Define SB Task Priority +** +** \par Description: +** Defines the cFE_SB Task priority. +** +** \par Limits +** Not Applicable +*/ +#define CFE_PLATFORM_SB_START_TASK_PRIORITY 64 + +/** +** \cfeescfg Define SB Task Stack Size +** +** \par Description: +** Defines the cFE_SB Task Stack Size +** +** \par Limits +** There is a lower limit of 2048 on this configuration parameter. There +** are no restrictions on the upper limit however, the maximum stack size +** is system dependent and should be verified. Most operating systems provide +** tools for measuring the amount of stack used by a task during operation. It +** is always a good idea to verify that no more than 1/2 of the stack is used. +*/ +#define CFE_PLATFORM_SB_START_TASK_STACK_SIZE CFE_PLATFORM_ES_DEFAULT_STACK_SIZE + +/***************************************************************************/ +/* + * CFE Table Services (CFE_TBL) Application Private Config Definitions + */ + +/** +** \cfeescfg Define TBL Task Priority +** +** \par Description: +** Defines the cFE_TBL Task priority. +** +** \par Limits +** Not Applicable +*/ +#define CFE_PLATFORM_TBL_START_TASK_PRIORITY 70 + +/** +** \cfeescfg Define TBL Task Stack Size +** +** \par Description: +** Defines the cFE_TBL Task Stack Size +** +** \par Limits +** There is a lower limit of 2048 on this configuration parameter. There +** are no restrictions on the upper limit however, the maximum stack size +** is system dependent and should be verified. Most operating systems provide +** tools for measuring the amount of stack used by a task during operation. It +** is always a good idea to verify that no more than 1/2 of the stack is used. +*/ +#define CFE_PLATFORM_TBL_START_TASK_STACK_SIZE CFE_PLATFORM_ES_DEFAULT_STACK_SIZE + +/* Platform Configuration Parameters for Table Service (TBL) */ + +/** +** \cfetblcfg Size of Table Services Table Memory Pool +** +** \par Description: +** Defines the TOTAL size of the memory pool that cFE Table Services allocates +** from the system. The size must be large enough to provide memory for each +** registered table, the inactive buffers for double buffered tables and for +** the shared inactive buffers for single buffered tables. +** +** \par Limits +** The cFE does not place a limit on the size of this parameter. +*/ +#define CFE_PLATFORM_TBL_BUF_MEMORY_BYTES 524288 + +/** +** \cfetblcfg Maximum Size Allowed for a Double Buffered Table +** +** \par Description: +** Defines the maximum allowed size (in bytes) of a double buffered table. +** +** \par Limits +** The cFE does not place a limit on the size of this parameter but it must be +** less than half of #CFE_PLATFORM_TBL_BUF_MEMORY_BYTES. +*/ +#define CFE_PLATFORM_TBL_MAX_DBL_TABLE_SIZE 16384 + +/** +** \cfetblcfg Maximum Size Allowed for a Single Buffered Table +** +** \par Description: +** Defines the maximum allowed size (in bytes) of a single buffered table. +** \b NOTE: This size determines the size of all shared table buffers. +** Therefore, this size will be multiplied by #CFE_PLATFORM_TBL_MAX_SIMULTANEOUS_LOADS +** below when allocating memory for shared tables. +** +** \par Limits +** The cFE does not place a limit on the size of this parameter but it must be +** small enough to allow for #CFE_PLATFORM_TBL_MAX_SIMULTANEOUS_LOADS number of tables +** to fit into #CFE_PLATFORM_TBL_BUF_MEMORY_BYTES. +*/ +#define CFE_PLATFORM_TBL_MAX_SNGL_TABLE_SIZE 16384 + +/** +** \cfetblcfg Maximum Number of Tables Allowed to be Registered +** +** \par Description: +** Defines the maximum number of tables supported by this processor's Table Services. +** +** \par Limits +** This number must be less than 32767. It should be recognized that this parameter +** determines the size of the Table Registry. An excessively high number will waste +** memory. +*/ +#define CFE_PLATFORM_TBL_MAX_NUM_TABLES 128 + +/** +** \cfetblcfg Maximum Number of Critical Tables that can be Registered +** +** \par Description: +** Defines the maximum number of critical tables supported by this processor's Table Services. +** +** \par Limits +** This number must be less than 32767. It should be recognized that this parameter +** determines the size of the Critical Table Registry which is maintained in the Critical +** Data Store. An excessively high number will waste Critical Data Store memory. Therefore, +** this number must not exceed the value defined in CFE_ES_CDS_MAX_CRITICAL_TABLES. +*/ +#define CFE_PLATFORM_TBL_MAX_CRITICAL_TABLES 32 + +/** +** \cfetblcfg Maximum Number of Table Handles +** +** \par Description: +** Defines the maximum number of Table Handles. +** +** \par Limits +** This number must be less than 32767. This number must be at least as big as +** the number of tables (#CFE_PLATFORM_TBL_MAX_NUM_TABLES) and should be set higher if tables +** are shared between applications. +*/ +#define CFE_PLATFORM_TBL_MAX_NUM_HANDLES 256 + +/** +** \cfetblcfg Maximum Number of Simultaneous Loads to Support +** +** \par Description: +** Defines the maximum number of single buffered tables that can be +** loaded simultaneously. This number is used to determine the number +** of shared buffers to allocate. +** +** \par Limits +** This number must be less than 32767. An excessively high number will +** degrade system performance and waste memory. A number less than 5 is +** suggested but not required. +*/ +#define CFE_PLATFORM_TBL_MAX_SIMULTANEOUS_LOADS 4 + +/** +** \cfetblcfg Maximum Number of Simultaneous Table Validations +** +** \par Description: +** Defines the maximum number of pending validations that +** the Table Services can handle at any one time. When a +** table has a validation function, a validation request is +** made of the application to perform that validation. This +** number determines how many of those requests can be +** outstanding at any one time. +** +** \par Limits +** This number must be less than 32767. An excessively high number will +** degrade system performance and waste memory. A number less than 20 is +** suggested but not required. +*/ +#define CFE_PLATFORM_TBL_MAX_NUM_VALIDATIONS 10 + +/** +** \cfetblcfg Default Filename for a Table Registry Dump +** +** \par Description: +** Defines the file name used to store the table registry when +** no filename is specified in the dump registry command. +** +** \par Limits +** The length of each string, including the NULL terminator cannot exceed the +** #OS_MAX_PATH_LEN value. +*/ +#define CFE_PLATFORM_TBL_DEFAULT_REG_DUMP_FILE "/ram/cfe_tbl_reg.log" + +/** +** \cfetblcfg Number of Spacecraft ID's specified for validation +** +** \par Description: +** Defines the number of specified spacecraft ID values that +** are verified during table loads. If the number is zero +** then no validation of the spacecraft ID field in the table +** file header is performed when tables are loaded. Non-zero +** values indicate how many values from the list of spacecraft +** ID's defined below are compared to the spacecraft ID field +** in the table file header. The ELF2CFETBL tool may be used +** to create table files with specified spacecraft ID values. +** +** \par Limits +** This number must be greater than or equal to zero and +** less than or equal to 2. +*/ +#define CFE_PLATFORM_TBL_VALID_SCID_COUNT 0 + +/* macro to construct 32 bit value from 4 chars */ +#define CFE_PLATFORM_TBL_U32FROM4CHARS(_C1, _C2, _C3, _C4) \ + ((uint32)(_C1) << 24 | (uint32)(_C2) << 16 | (uint32)(_C3) << 8 | (uint32)(_C4)) + +/** +** \cfetblcfg Spacecraft ID values used for table load validation +** +** \par Description: +** Defines the spacecraft ID values used for validating the +** spacecraft ID field in the table file header. To be valid, +** the spacecraft ID specified in the table file header must +** match one of the values defined here. +** +** \par Limits +** This value can be any 32 bit unsigned integer. +*/ +#define CFE_PLATFORM_TBL_VALID_SCID_1 (0x42) +#define CFE_PLATFORM_TBL_VALID_SCID_2 (CFE_PLATFORM_TBL_U32FROM4CHARS('a', 'b', 'c', 'd')) + +/** +** \cfetblcfg Number of Processor ID's specified for validation +** +** \par Description: +** Defines the number of specified processor ID values that +** are verified during table loads. If the number is zero +** then no validation of the processor ID field in the table +** file header is performed when tables are loaded. Non-zero +** values indicate how many values from the list of processor +** ID's defined below are compared to the processor ID field +** in the table file header. The ELF2CFETBL tool may be used +** to create table files with specified processor ID values. +** +** \par Limits +** This number must be greater than or equal to zero and +** less than or equal to 4. +*/ +#define CFE_PLATFORM_TBL_VALID_PRID_COUNT 0 + +/** +** \cfetblcfg Processor ID values used for table load validation +** +** \par Description: +** Defines the processor ID values used for validating the +** processor ID field in the table file header. To be valid, +** the spacecraft ID specified in the table file header must +** match one of the values defined here. +** +** \par Limits +** This value can be any 32 bit unsigned integer. +*/ +#define CFE_PLATFORM_TBL_VALID_PRID_1 (1) +#define CFE_PLATFORM_TBL_VALID_PRID_2 (CFE_PLATFORM_TBL_U32FROM4CHARS('a', 'b', 'c', 'd')) +#define CFE_PLATFORM_TBL_VALID_PRID_3 0 +#define CFE_PLATFORM_TBL_VALID_PRID_4 0 + +/*************************************************************************/ +/* + * CFE Time Service (CFE_TIME) Application Private Config Definitions + */ + +/** +** \cfetimecfg Time Server or Time Client Selection +** +** \par Description: +** This configuration parameter selects whether the Time task functions as a +** time "server" or "client". A time server generates the "time at the tone" +** packet which is received by time clients. +** +** \par Limits +** Enable one, and only one by defining either CFE_PLATFORM_TIME_CFG_SERVER or +** CFE_PLATFORM_TIME_CFG_CLIENT AS true. The other must be defined as false. +*/ +#define CFE_PLATFORM_TIME_CFG_SERVER true +#define CFE_PLATFORM_TIME_CFG_CLIENT false + +/** +** \cfetimecfg Time Tone In Big-Endian Order +** +** \par Description: +** If this configuration parameter is defined, the CFE time server will +** publish time tones with payloads in big-endian order, and time clients +** will expect the tones to be in big-endian order. This is useful for +** mixed-endian environments. This will become obsolete once EDS is +** available and the CFE time tone message is defined. +*/ +#undef CFE_PLATFORM_TIME_CFG_BIGENDIAN + +/** +** \cfetimecfg Local MET or Virtual MET Selection for Time Servers +** +** \par Description: +** Depending on the specific hardware system configuration, it may be possible +** for Time Servers to read the "local" MET from a h/w register rather than +** having to track the MET as the count of tone signal interrupts (virtual MET) +** +** Time Clients must be defined as using a virtual MET. Also, a Time Server +** cannot be defined as having both a h/w MET and an external time source (they +** both cannot synchronize to the same tone). +** +** Note: "disable" this define (set to false) only for Time Servers with local hardware +** that supports a h/w MET that is synchronized to the tone signal !!! +** +** \par Limits +** Only applies if #CFE_PLATFORM_TIME_CFG_SERVER is set to true. +*/ +#define CFE_PLATFORM_TIME_CFG_VIRTUAL true + +/** +** \cfetimecfg Include or Exclude the Primary/Redundant Tone Selection Cmd +** +** \par Description: +** Depending on the specific hardware system configuration, it may be possible +** to switch between a primary and redundant tone signal. If supported by +** hardware, this definition will enable command interfaces to select the +** active tone signal. Both Time Clients and Time Servers support this feature. +** Note: Set the CFE_PLATFORM_TIME_CFG_SIGNAL define to true to enable tone signal commands. +** +** \par Limits +** Not Applicable +*/ +#define CFE_PLATFORM_TIME_CFG_SIGNAL false + +/** +** \cfetimecfg Include or Exclude the Internal/External Time Source Selection Cmd +** +** \par Description: +** By default, Time Servers maintain time using an internal MET which may be a +** h/w register or software counter, depending on available hardware. The +** following definition enables command interfaces to switch between an +** internal MET, or external time data received from one of several supported +** external time sources. Only a Time Server may be configured to use external +** time data. +** Note: Set the CFE_PLATFORM_TIME_CFG_SOURCE define to true to include the Time Source +** Selection Command (command allows selection between the internal +** or external time source). Then choose the external source with the +** CFE_TIME_CFG_SRC_??? define. +** +** \par Limits +** Only applies if #CFE_PLATFORM_TIME_CFG_SERVER is set to true. +*/ +#define CFE_PLATFORM_TIME_CFG_SOURCE false + +/** +** \cfetimecfg Choose the External Time Source for Server only +** +** \par Description: +** If #CFE_PLATFORM_TIME_CFG_SOURCE is set to true, then one of the following external time +** source types must also be set to true. Do not set any of the external time +** source types must also be set to true. Do not set any of the external time +** source types to true unless #CFE_PLATFORM_TIME_CFG_SOURCE is set to true. +** +** \par Limits +** -# If #CFE_PLATFORM_TIME_CFG_SOURCE is set to true then one and only one of the following +** three external time sources can and must be set true: +** #CFE_PLATFORM_TIME_CFG_SRC_MET, #CFE_PLATFORM_TIME_CFG_SRC_GPS, #CFE_PLATFORM_TIME_CFG_SRC_TIME +** -# Only applies if #CFE_PLATFORM_TIME_CFG_SERVER is set to true. +*/ +#define CFE_PLATFORM_TIME_CFG_SRC_MET false +#define CFE_PLATFORM_TIME_CFG_SRC_GPS false +#define CFE_PLATFORM_TIME_CFG_SRC_TIME false + +/** +** \cfetimecfg Define the Max Delta Limits for Time Servers using an Ext Time Source +** +** \par Description: +** If #CFE_PLATFORM_TIME_CFG_SOURCE is set to true and one of the external time sources is +** also set to true, then the delta time limits for range checking is used. +** +** When a new time value is received from an external source, the value is +** compared against the "expected" time value. If the delta exceeds the +** following defined amount, then the new time data will be ignored. This range +** checking is only performed after the clock state has been commanded to +** "valid". Until then, external time data is accepted unconditionally. +** +** \par Limits +** Applies only if both #CFE_PLATFORM_TIME_CFG_SERVER and #CFE_PLATFORM_TIME_CFG_SOURCE are set +** to true. +*/ +#define CFE_PLATFORM_TIME_MAX_DELTA_SECS 0 +#define CFE_PLATFORM_TIME_MAX_DELTA_SUBS 500000 + +/** +** \cfetimecfg Define the Local Clock Rollover Value in seconds and subseconds +** +** \par Description: +** Specifies the capability of the local clock. Indicates the time at which +** the local clock rolls over. +** +** \par Limits +** Not Applicable +*/ +#define CFE_PLATFORM_TIME_MAX_LOCAL_SECS 27 +#define CFE_PLATFORM_TIME_MAX_LOCAL_SUBS 0 + +/** +** \cfetimecfg Define Timing Limits From One Tone To The Next +** +** \par Description: +** Defines limits to the timing of the 1Hz tone signal. A tone signal is valid +** only if it arrives within one second (plus or minus the tone limit) from +** the previous tone signal.Units are microseconds as measured with the local +** clock. +** +** \par Limits +** Not Applicable +*/ +#define CFE_PLATFORM_TIME_CFG_TONE_LIMIT 20000 + +/** +** \cfetimecfg Define Time to Start Flywheel Since Last Tone +** +** \par Description: +** Define time to enter flywheel mode (in seconds since last tone data update) +** Units are microseconds as measured with the local clock. +** +** \par Limits +** Not Applicable +*/ +#define CFE_PLATFORM_TIME_CFG_START_FLY 2 + +/** +** \cfetimecfg Define Periodic Time to Update Local Clock Tone Latch +** +** \par Description: +** Define Periodic Time to Update Local Clock Tone Latch. Applies only when +** in flywheel mode. This define dictates the period at which the simulated +** 'last tone' time is updated. Units are seconds. +** +** \par Limits +** Not Applicable +*/ +#define CFE_PLATFORM_TIME_CFG_LATCH_FLY 8 + +/** +** \cfetimecfg Define TIME Task Priorities +** +** \par Description: +** Defines the cFE_TIME Task priority. +** Defines the cFE_TIME Tone Task priority. +** Defines the cFE_TIME 1HZ Task priority. +** +** \par Limits +** There is a lower limit of zero and an upper limit of 255 on these +** configuration parameters. Remember that the meaning of each task +** priority is inverted -- a "lower" number has a "higher" priority. +*/ +#define CFE_PLATFORM_TIME_START_TASK_PRIORITY 60 +#define CFE_PLATFORM_TIME_TONE_TASK_PRIORITY 25 +#define CFE_PLATFORM_TIME_ONEHZ_TASK_PRIORITY 25 + +/** +** \cfetimecfg Define TIME Task Stack Sizes +** +** \par Description: +** Defines the cFE_TIME Main Task Stack Size +** Defines the cFE_TIME Tone Task Stack Size +** Defines the cFE_TIME 1HZ Task Stack Size +** +** \par Limits +** There is a lower limit of 2048 on these configuration parameters. There +** are no restrictions on the upper limit however, the maximum stack size +** is system dependent and should be verified. Most operating systems provide +** tools for measuring the amount of stack used by a task during operation. It +** is always a good idea to verify that no more than 1/2 of the stack is used. +*/ +#define CFE_PLATFORM_TIME_START_TASK_STACK_SIZE CFE_PLATFORM_ES_DEFAULT_STACK_SIZE +#define CFE_PLATFORM_TIME_TONE_TASK_STACK_SIZE 4096 +#define CFE_PLATFORM_TIME_ONEHZ_TASK_STACK_SIZE 8192 + +#endif /* CPU1_PLATFORM_CFG_H */ diff --git a/cfg/tryspace_defs/default_osconfig.cmake b/cfg/tryspace_defs/default_osconfig.cmake new file mode 100644 index 0000000..0c85156 --- /dev/null +++ b/cfg/tryspace_defs/default_osconfig.cmake @@ -0,0 +1,59 @@ +########################################################################## +# +# CFE-specific configuration options for OSAL +# +# This file specifies the CFE-specific values for various compile options +# supported by OSAL. +# +# OSAL has many configuration options, which may vary depending on the +# specific version of OSAL in use. The complete list of OSAL options, +# along with a description of each, can be found OSAL source in the file: +# +# osal/default_config.cmake +# +# A CFE framework build utilizes mostly the OSAL default configuration. +# This file only contains a few specific overrides that tune for a debug +# environment, rather than a deployment environment. +# +# ALSO NOTE: There is also an arch-specific addendum to this file +# to allow further tuning on a per-arch basis, in the form of: +# +# ${TOOLCHAIN_NAME}_osconfig.cmake +# +# See "native_osconfig.cmake" for options which apply only to "native" builds. +# +########################################################################## + +# For CFE builds this can be helpful during debugging as it will display more +# specific error messages for various OSAL error/warning events, such as if a +# module cannot be loaded or a file cannot be opened for some reason. +set(OSAL_CONFIG_DEBUG_PRINTF TRUE) + +# Note that even with this enabled, OSAL will still _attempt_ to create +# resources as requested, this only makes it so the overall request will +# continue, regardless of whether the privileged operation succeeded or not. +set(OSAL_CONFIG_DEBUG_PERMISSIVE_MODE TRUE) + +# +# Resource Limits for the OS API +# ------------------------ + +# The maximum number of concurrently-running tasks to support +set(OSAL_CONFIG_MAX_TASKS 128) + +# The maximum number of queues to support +set(OSAL_CONFIG_MAX_QUEUES 128) + +# The maximum number of counting semaphores to support +set(OSAL_CONFIG_MAX_COUNT_SEMAPHORES 45) + +# The maximum number of binary semaphores to support +set(OSAL_CONFIG_MAX_BIN_SEMAPHORES 45) + +# The maximum number of mutexes to support +set(OSAL_CONFIG_MAX_MUTEXES 45) + +# The maximum number of loadable modules to support +# Note that emulating module loading for statically-linked objects also +# requires a slot in this table, as it still assigns an OSAL ID. +set(OSAL_CONFIG_MAX_MODULES 64) \ No newline at end of file diff --git a/cfg/tryspace_defs/eds/cfe-topicids.xml b/cfg/tryspace_defs/eds/cfe-topicids.xml new file mode 100644 index 0000000..90ff6ee --- /dev/null +++ b/cfg/tryspace_defs/eds/cfe-topicids.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cfg/tryspace_defs/eds/config.xml b/cfg/tryspace_defs/eds/config.xml new file mode 100644 index 0000000..ea7acf3 --- /dev/null +++ b/cfg/tryspace_defs/eds/config.xml @@ -0,0 +1,585 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \cfeescfg Maximum Length of CDS Name + + \par Description: + Indicates the maximum length (in characters) of the CDS name ('CDSName') + portion of a Full CDS Name of the following form: + "ApplicationName.CDSName" + + This length does not need to include an extra character for NULL termination. + + \par Limits + This value should be kept as a multiple of 4, to maintain alignment of + any possible neighboring fields without implicit padding. + + + + + + \cfeevscfg Maximum Event Message Length + + \par Description: + Indicates the maximum length (in characters) of the formatted text + string portion of an event message + + This length does not need to include an extra character for NULL termination. + + \par Limits + Not Applicable + + + + + + \cfetblcfg Maximum Table Name Length + + \par Description: + Indicates the maximum length (in characers) of the table name + ('TblName') portion of a Full Table Name of the following + form: "ApplicationName.TblName" + + This length does not need to include an extra character for NULL termination. + + \par Limits + This value should be kept as a multiple of 4, to maintain alignment of + any possible neighboring fields without implicit padding. + + + + + + \cfeescfg Mission Max Apps in a message + + \par Description: + Indicates the maximum number of apps in a telemetry housekeeping message + + This affects the layout of command/telemetry messages but does not affect run + time behavior or internal allocation. + + \par Limits + All CPUs within the same SB domain (mission) must share the same definition + Note this affects the size of messages, so it must not cause any message + to exceed the max length. + + + + + + \cfeescfg Define Max Number of Performance IDs for messages + + \par Description: + Defines the maximum number of perf ids allowed in command/telemetry messages + + This affects the layout of command/telemetry messages but does not affect run + time behavior or internal allocation. + + \par Limits + All CPUs within the same SB domain (mission) must share the same definition + Note this affects the size of messages, so it must not cause any message + to exceed the max length. + + + + + + \cfeescfg Maximum number of block sizes in pool structures + + \par Description: + The upper limit for the number of block sizes supported in the generic + pool implementation, which in turn implements the memory pools and CDS. + This definition is used as the array size with the pool stats structure, + and therefore should be consistent across all CPUs in a mission, as well + as with the ground station. + + There is also a platform-specific limit which may be fewer than this + value. + + \par Limits: + Must be at least one. No specific upper limit, but the number is + anticipated to be reasonably small (i.e. tens, not hundreds). Large + values have not been tested. + + + + + + \cfetblcfg Maximum Length of Full Table Name in messages + + \par Description: + Indicates the maximum length (in characters) of the entire table name + within software bus messages, in "AppName.TableName" notation. + + This affects the layout of command/telemetry messages but does not affect run + time behavior or internal allocation. + + \par Limits + All CPUs within the same SB domain (mission) must share the same definition + Note this affects the size of messages, so it must not cause any message + to exceed the max length. + + This value should be kept as a multiple of 4, to maintain alignment of + any possible neighboring fields without implicit padding. + + + + + + \cfesbcfg Maximum Number of pipes that SB command/telemetry messages may hold + + \par Description: + Dictates the maximum number of unique Pipes the SB message defintions will hold. + + This affects the layout of command/telemetry messages but does not affect run + time behavior or internal allocation. + + \par Limits + All CPUs within the same SB domain (mission) must share the same definition + Note this affects the size of messages, so it must not cause any message + to exceed the max length. + + + + + + \cfemissioncfg cFE Maximum length for pathnames within data exchange structures + + \par Description: + The value of this constant dictates the size of pathnames within all structures + used for external data exchange, such as Software bus messages and table definitions. + This is typically the same as OS_MAX_PATH_LEN but that is OSAL dependent -- + and as such it definable on a per-processor/OS basis and hence may be different + across multiple processors. It is recommended to set this to the value of the + largest OS_MAX_PATH_LEN in use on any CPU on the mission. + + This affects only the layout of command/telemetry messages and table definitions; + internal allocation may use the platform-specific OS_MAX_PATH_LEN value. + + This length must include an extra character for NULL termination. + + \par Limits + All CPUs within the same SB domain (mission) and ground tools must share the + same definition. + Note this affects the size of messages, so it must not cause any message + to exceed the max length. + + This value should be kept as a multiple of 4, to maintain alignment of + any possible neighboring fields without implicit padding. + + + + + + \cfesbcfg Maximum SB Message Size + + \par Description: + The following definition dictates the maximum message size allowed on + the software bus. SB checks the pkt length field in the header of all + messages sent. If the pkt length field indicates the message is larger + than this define, SB sends an event and rejects the send. + + \par Limits + This parameter has a lower limit of 6 (CCSDS primary header size). There + are no restrictions on the upper limit however, the maximum message size is + system dependent and should be verified. Total message size values that are + checked against this configuration are defined by a 16 bit data word. + + + + + + + \cfetimecfg Default Time Format + + \par Description: + The following definitions select either UTC or TAI as the default + (mission specific) time format. Although it is possible for an + application to request time in a specific format, most callers + should use CFE_TIME_GetTime(), which returns time in the default + format. This avoids having to modify each individual caller + when the default choice is changed. + + \par Limits + if CFE_MISSION_TIME_CFG_DEFAULT_TAI is defined as true then CFE_MISSION_TIME_CFG_DEFAULT_UTC must be + defined as false. + if CFE_MISSION_TIME_CFG_DEFAULT_TAI is defined as false then CFE_MISSION_TIME_CFG_DEFAULT_UTC must be + defined as true. + + + + + + + + \cfetimecfg Default Time Format + + \par Description: + The following definition enables the use of a simulated time at + the tone signal using a software bus message. + + \par Limits + Not Applicable + + + + + + + \cfetimecfg Default Time and Tone Order + + \par Description: + Time Services may be configured to expect the time at the tone + data packet to either precede or follow the tone signal. If the + time at the tone data packet follows the tone signal, then the + data within the packet describes what the time "was" at the tone. + If the time at the tone data packet precedes the tone signal, then + the data within the packet describes what the time "will be" at + the tone. One, and only one, of the following symbols must be set to true: + + - CFE_MISSION_TIME_AT_TONE_WAS + - CFE_MISSION_TIME_AT_TONE_WILL_BE + + Note: If Time Services is defined as using a simulated tone signal + (see #CFE_MISSION_TIME_CFG_FAKE_TONE above), then the tone data packet + must follow the tone signal. + + \par Limits + Either CFE_MISSION_TIME_AT_TONE_WAS or CFE_MISSION_TIME_AT_TONE_WILL_BE must be set to true. + They may not both be true and they may not both be false. + + + + + + + + \cfetimecfg Min and Max Time Elapsed + + \par Description: + Based on the definition of Time and Tone Order + (CFE_MISSION_TIME_AT_TONE_WAS/WILL_BE) either the "time at the tone" signal or + data packet will follow the other. This definition sets the valid window + of time for the second of the pair to lag behind the first. Time + Services will invalidate both the tone and packet if the second does not + arrive within this window following the first. + + For example, if the data packet follows the tone, it might be valid for + the data packet to arrive between zero and 100,000 micro-seconds after + the tone. But, if the tone follows the packet, it might be valid + only if the packet arrived between 200,000 and 700,000 micro-seconds + before the tone. + + Note: units are in micro-seconds + + \par Limits + 0 to 999,999 decimal + + + + + + + + \cfetimecfg Default Time Values + + \par Description: + Default time values are provided to avoid problems due to time + calculations performed after startup but before commands can be + processed. For example, if the default time format is UTC then + it is important that the sum of MET and STCF always exceed the + value of Leap Seconds to prevent the UTC time calculation + + (time = MET + STCF - Leap Seconds) from resulting in a negative + (very large) number. + + Some past missions have also created known (albeit wrong) default + timestamps. For example, assume the epoch is defined as Jan 1, 1970 + and further assume the default time values are set to create a timestamp + of Jan 1, 2000. Even though the year 2000 timestamps are wrong, it + may be of value to keep the time within some sort of bounds acceptable + to the software. + + Note: Sub-second units are in micro-seconds (0 to 999,999) and + all values must be defined + + \par Limits + Not Applicable + + + + + + + + + + + + + + + + \cfetimecfg Default EPOCH Values + + \par Description: + Default ground time epoch values + Note: these values are used only by the CFE_TIME_Print() API function + + \par Limits + Year - must be within 136 years + Day - Jan 1 = 1, Feb 1 = 32, etc. + Hour - 0 to 23 + Minute - 0 to 59 + Second - 0 to 59 + Micros - 0 to 999999 + + + + + + + + + + + \cfetimecfg Time File System Factor + + \par Description: + Define the s/c vs file system time conversion constant... + + Note: this value is intended for use only by CFE TIME API functions to + convert time values based on the ground system epoch (s/c time) to + and from time values based on the file system epoch (fs time). + + FS time = S/C time + factor + S/C time = FS time - factor + + Worksheet: + + S/C epoch = Jan 1, 2005 (LRO ground system epoch) + FS epoch = Jan 1, 1980 (vxWorks DOS file system epoch) + + Delta = 25 years, 0 days, 0 hours, 0 minutes, 0 seconds + + Leap years = 1980, 1984, 1988, 1992, 1996, 2000, 2004 + (divisible by 4 -- except if by 100 -- unless also by 400) + + 1 year = 31,536,000 seconds + 1 day = 86,400 seconds + 1 hour = 3,600 seconds + 1 minute = 60 seconds + + 25 years = 788,400,000 seconds + 7 extra leap days = 604,800 seconds + + total delta = 789,004,800 seconds + + \par Limits + Not Applicable + + + + + + \cfeescfg Mission Default CRC algorithm + + \par Description: + Indicates the which CRC algorithm should be used as the default + for verifying the contents of Critical Data Stores and when calculating + Table Image data integrity values. + + \par Limits + Currently only CFE_MISSION_ES_CRC_16 is supported (see #CFE_MISSION_ES_CRC_16) + + + + + + + \cfemissioncfg cFE Maximum length for filenames within data exchange structures + + \par Description: + The value of this constant dictates the size of filenames within all structures + used for external data exchange, such as Software bus messages and table definitions. + This is typically the same as OS_MAX_FILE_LEN but that is OSAL dependent -- + and as such it definable on a per-processor/OS basis and hence may be different + across multiple processors. It is recommended to set this to the value of the + largest OS_MAX_FILE_LEN in use on any CPU on the mission. + + This affects only the layout of command/telemetry messages and table definitions; + internal allocation may use the platform-specific OS_MAX_FILE_LEN value. + + This length must include an extra character for NULL termination. + + \par Limits + All CPUs within the same SB domain (mission) and ground tools must share the + same definition. + Note this affects the size of messages, so it must not cause any message + to exceed the max length. + + This value should be kept as a multiple of 4, to maintain alignment of + any possible neighboring fields without implicit padding. + + + + + + \cfemissioncfg cFE Maximum length for API names within data exchange structures + + \par Description: + The value of this constant dictates the size of filenames within all structures + used for external data exchange, such as Software bus messages and table definitions. + This is typically the same as OS_MAX_API_LEN but that is OSAL dependent -- + and as such it definable on a per-processor/OS basis and hence may be different + across multiple processors. It is recommended to set this to the value of the + largest OS_MAX_API_LEN in use on any CPU on the mission. + + This affects only the layout of command/telemetry messages and table definitions; + internal allocation may use the platform-specific OS_MAX_API_LEN value. + + This length must include an extra character for NULL termination. + + \par Limits + All CPUs within the same SB domain (mission) must share the same definition + Note this affects the size of messages, so it must not cause any message + to exceed the max length. + + This value should be kept as a multiple of 4, to maintain alignment of + any possible neighboring fields without implicit padding. + + + + + + \cfeescfg Maximum Length of Full CDS Name in messages + + \par Description: + Indicates the maximum length (in characters) of the entire CDS name + of the following form: "ApplicationName.CDSName" + + This affects the layout of command/telemetry messages but does not affect run + time behavior or internal allocation. + + \par Limits + All CPUs within the same SB domain (mission) must share the same definition + Note this affects the size of messages, so it must not cause any message + to exceed the max length. + + This value should be kept as a multiple of 4, to maintain alignment of + any possible neighboring fields without implicit padding. + + + + + + + + diff --git a/cfg/tryspace_defs/global_build_options.cmake b/cfg/tryspace_defs/global_build_options.cmake new file mode 100644 index 0000000..162c425 --- /dev/null +++ b/cfg/tryspace_defs/global_build_options.cmake @@ -0,0 +1,37 @@ +# +# Example global_build_options.cmake +# ---------------------------------- +# +# This may set global definitions that apply to ALL targets in ALL scopes, +# including FSW code that is cross-compiled for a target as well as code +# built for the development host itself (native). +# +# As such, it should only invoke basic commands that have wide applicability, +# such as "add_definitions()" for macro definitions that should be set +# globally. It should not include any compiler-specific options that might +# change between compiler vendors or target processor families. +# + +# If the OMIT_DEPRECATED flag is specified, then define the respective macros +# that omit the deprecated features from the build. This is conditional in this +# example for CI purposes, so it can be tested both ways. Most projects would +# likely set this only one way. +set(OMIT_DEPRECATED $ENV{OMIT_DEPRECATED} CACHE STRING "Omit deprecated elements") +if (OMIT_DEPRECATED) + message (STATUS "OMIT_DEPRECATED=true: Not including deprecated elements in build") + add_definitions(-DCFE_OMIT_DEPRECATED_6_8 -DCFE_OMIT_DEPRECATED_6_7 -DCFE_OMIT_DEPRECATED_6_6 -DOSAL_OMIT_DEPRECATED) + set(MISSION_RESOURCEID_MODE "STRICT") # more type safe, but less backward compatible +else() + message (STATUS "OMIT_DEPRECATED=false: Deprecated elements included in build") + set(MISSION_RESOURCEID_MODE "SIMPLE") # less type safe, but more backward compatible +endif (OMIT_DEPRECATED) + +# +# Set the CryptoLib FSW build flags for cFS use +# +set(CRYPTO_LIBGCRYPT ON CACHE BOOL "Cryptography Module - Libgcrypt" FORCE) +set(KEY_INTERNAL ON CACHE BOOL "Key Module - Internal" FORCE) +set(MC_INTERNAL ON CACHE BOOL "Monitoring and Control - Internal" FORCE) +set(SA_FILE OFF CACHE BOOL "Save Security Association to File" FORCE) +set(SA_INTERNAL ON CACHE BOOL "Security Association - Internal" FORCE) +#set(DEBUG ON CACHE BOOL "CryptoLib Debug" FORCE) diff --git a/cfg/tryspace_defs/mission_build_custom.cmake b/cfg/tryspace_defs/mission_build_custom.cmake new file mode 100644 index 0000000..01e940e --- /dev/null +++ b/cfg/tryspace_defs/mission_build_custom.cmake @@ -0,0 +1,28 @@ +# +# Example mission_build_custom.cmake +# ---------------------------------- +# +# This file will be automatically included in the top level ("mission") build scope +# +# Definitions and options specified here will be used when building local tools and +# other code that runs on the development host, but do _NOT_ apply to flight software +# (embedded) code or anything built for the target machine. +# +# These options assume a GCC toolchain but a similar set should be applicable to clang. +# +add_compile_options( + -std=c99 # Target the C99 standard (without gcc extensions) + -pedantic # Issue all the warnings demanded by strict ISO C + -Wall # Warn about most questionable operations + -Wstrict-prototypes # Warn about missing prototypes + -Wwrite-strings # Warn if not treating string literals as "const" + -Wpointer-arith # Warn about suspicious pointer operations + -Wcast-align # Warn about casts that increase alignment requirements + -Werror # Treat warnings as errors (code should be clean) +) + +# The _XOPEN_SOURCE directive is required for glibc to enable conformance with the +# the X/Open standard version 6, which includes POSIX.1c as well as SUSv2/UNIX98 extensions. +add_definitions( + -D_XOPEN_SOURCE=600 +) diff --git a/cfg/tryspace_defs/native_osconfig.cmake b/cfg/tryspace_defs/native_osconfig.cmake new file mode 100644 index 0000000..9cc2527 --- /dev/null +++ b/cfg/tryspace_defs/native_osconfig.cmake @@ -0,0 +1,58 @@ +########################################################################## +# +# CPU/Arch-specific configuration options for OSAL +# +# This file specifies the CFE-specific values for various compile options +# that are used only when compiling using a specific toolchain. +# +# OSAL has many configuration options, which may vary depending on the +# specific version of OSAL in use. The complete list of OSAL options, +# along with a description of each, can be found OSAL source in the file: +# +# osal/default_config.cmake +# +# This file is an addendum to the CFE-specific overrides that will be +# used/enabled when building with the "SIMULATION=native" mode. +# +# See "default_osconfig.cmake" for options which apply only to all builds, +# regardless of toolchain in use. +# +########################################################################## + +# +# OSAL_CONFIG_DEBUG_PERMISSIVE_MODE +# --------------------------------- +# +# When building with SIMULATION=native, enable the PERMISSIVE option, +# which allows for easier testing. This option causes the OSAL to +# continue through certain privileged operations (ignores errors) when +# running as a standard/non-root user. +# +# Typically a regular user on a default Linux workstation configuration +# would not have permission to create realtime priority threads or FIFO +# queues deeper than the soft limit in /proc/sys/fs/mqueue/msg_max. +# +# Note that even with this enabled, OSAL will still _attempt_ to create +# resources as requested, this only makes it so the overall request will +# continue, regardless of whether the privileged operation succeeded or not. +# +set(OSAL_CONFIG_DEBUG_PERMISSIVE_MODE TRUE) + + +# +# OSAL_CONFIG_UTILITYTASK_PRIORITY +# -------------------------------- +# +# Elevate the priority level of the console output helper task +# +# By default OSAL uses a low-priority utility task to write +# "OS_printf" messages in a deferred manner. However this deferred +# write can potentially cause the messages to appear on the console +# out of sync with the events they are related to. +# +# Raising the priority of this task from its default to be _higher_ +# than the CFE core tasks means that OS_printf() messages should +# appear on the console in a timely manner, which helps during debug. +# However for a flight deployment this may cause undesired delays. +# +set(OSAL_CONFIG_UTILITYTASK_PRIORITY 10) diff --git a/cfg/tryspace_defs/perfids.h b/cfg/tryspace_defs/perfids.h new file mode 100644 index 0000000..a72c831 --- /dev/null +++ b/cfg/tryspace_defs/perfids.h @@ -0,0 +1,59 @@ +/************************************************************************ + * NASA Docket No. GSC-18,719-1, and identified as "core Flight System: Bootes" + * + * Copyright (c) 2020 United States Government as represented by the + * Administrator of the National Aeronautics and Space Administration. + * All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ************************************************************************/ + +/** + * @file + * + * Purpose: This file contains the cFE performance IDs + * + * Design Notes: + * Each performance id is used to identify something that needs to be + * measured. Performance ids are limited to the range of 0 to + * CFE_MISSION_ES_PERF_MAX_IDS - 1. Any performance ids outside of this range + * will be ignored and will be flagged as an error. Note that + * performance ids 0-31 are reserved for the cFE Core. + * + * References: + * + */ + +#ifndef TRYSPACE_PERFIDS_H +#define TRYSPACE_PERFIDS_H + +#define CFE_MISSION_ES_PERF_EXIT_BIT 31 /**< \brief bit (31) is reserved by the perf utilities */ + +/** \name cFE Performance Monitor IDs (Reserved IDs 0-31) */ +/** \{ */ +#define CFE_MISSION_ES_MAIN_PERF_ID 1 /**< \brief Performance ID for Executive Services Task */ +#define CFE_MISSION_EVS_MAIN_PERF_ID 2 /**< \brief Performance ID for Events Services Task */ +#define CFE_MISSION_TBL_MAIN_PERF_ID 3 /**< \brief Performance ID for Table Services Task */ +#define CFE_MISSION_SB_MAIN_PERF_ID 4 /**< \brief Performance ID for Software Bus Services Task */ +#define CFE_MISSION_SB_MSG_LIM_PERF_ID 5 /**< \brief Performance ID for Software Bus Msg Limit Errors */ +#define CFE_MISSION_SB_PIPE_OFLOW_PERF_ID 27 /**< \brief Performance ID for Software Bus Pipe Overflow Errors */ + +#define CFE_MISSION_TIME_MAIN_PERF_ID 6 /**< \brief Performance ID for Time Services Task */ +#define CFE_MISSION_TIME_TONE1HZISR_PERF_ID 7 /**< \brief Performance ID for 1 Hz Tone ISR */ +#define CFE_MISSION_TIME_LOCAL1HZISR_PERF_ID 8 /**< \brief Performance ID for 1 Hz Local ISR */ + +#define CFE_MISSION_TIME_SENDMET_PERF_ID 9 /**< \brief Performance ID for Time ToneSendMET */ +#define CFE_MISSION_TIME_LOCAL1HZTASK_PERF_ID 10 /**< \brief Performance ID for 1 Hz Local Task */ +#define CFE_MISSION_TIME_TONE1HZTASK_PERF_ID 11 /**< \brief Performance ID for 1 Hz Tone Task */ + +/** \} */ + +#endif /* TRYSPACE_PERFIDS_H */ \ No newline at end of file diff --git a/cfg/tryspace_defs/tables/cf_def_config.c b/cfg/tryspace_defs/tables/cf_def_config.c new file mode 100644 index 0000000..6ef70a9 --- /dev/null +++ b/cfg/tryspace_defs/tables/cf_def_config.c @@ -0,0 +1,85 @@ +/************************************************************************ + * NASA Docket No. GSC-18,447-1, and identified as “CFS CFDP (CF) + * Application version 3.0.0” + * + * Copyright (c) 2019 United States Government as represented by the + * Administrator of the National Aeronautics and Space Administration. + * All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ************************************************************************/ + +/** + * @file + * The CF Application default configuration table + */ +#include "cfe.h" +#include "cfe_tbl_filedef.h" +#include "cf_tbldefs.h" + +CF_ConfigTable_t CF_config_table = { + 1, /* ticks_per_second */ + 16384, /* max number of bytes per wakeup to calculate r2 recv file CRC */ + 25, /* local entity id */ + { /* channel configuration for CF_NUM_CHANNELS */ + { + /* channel 0 */ + 5, /* max number of outgoing messages per wakeup */ + 5, /* max number of rx messages per wakeup */ + 3, /* ACK timer */ + 3, /* NAK timer */ + 30, /* inactivity timer */ + 10, /* ACK limit */ + 10, /* NAK limit */ + 0x1FFD, /* input message id */ + 0x0FFD, /* output message id */ + 16, /* input pipe depth */ + { /* polling directory configuration for CF_MAX_POLLING_DIR_PER_CHAN */ + { + /* polling directory 0 */ + 5, /* interval seconds */ + 25, /* priority */ + CF_CFDP_CLASS_2, /* class to send */ + 23, /* destination entity id */ + "/cf/poll_dir", /* source directory */ + "./poll_dir", /* destination directory */ + 0 /* polling directory enable flag (1 = enabled) */ + }, + { + 0 /* zero fill unused polling directory slots */ + }}, + "", /* throttle sem, empty string means no throttle */ + 1, /* dequeue enable flag (1 = enabled) */ + .move_dir = "" /* If not empty, will attempt move instead of delete on TX file complete */ + }, + { /* channel 1 */ + 5, /* max number of outgoing messages per wakeup */ + 5, /* max number of rx messages per wakeup */ + 3, /* ack timer */ + 3, /* nak timer */ + 30, /* inactivity timer */ + 4, /* ack limit */ + 4, /* nak limit */ + 0x18c9, /* input message id */ + 0x08c3, /* output message id */ + 16, /* input pipe depth */ + { /* polling directory configuration for CF_MAX_POOLING_DIR_PER_CHAN */ + { + 0 /* zero fill unused polling directory slots */ + }}, + "", /* throttle sem, empty string means no throttle */ + 1, /* dequeue enable flag (1 = enabled) */ + .move_dir = ""}}, + 480, /* outgoing_file_chunk_size */ + "/cf/tmp", /* temporary file directory */ + "/cf/fail", /* Stores failed tx file for "polling directory" */ +}; +CFE_TBL_FILEDEF(CF_config_table, CF.config_table, CF config table, cf_def_config.tbl) diff --git a/cfg/tryspace_defs/tables/ds_file_tbl.c b/cfg/tryspace_defs/tables/ds_file_tbl.c new file mode 100644 index 0000000..2a31f1c --- /dev/null +++ b/cfg/tryspace_defs/tables/ds_file_tbl.c @@ -0,0 +1,274 @@ +/************************************************************************ + * NASA Docket No. GSC-18,917-1, and identified as “CFS Data Storage + * (DS) application version 2.6.1” + * + * Copyright (c) 2021 United States Government as represented by the + * Administrator of the National Aeronautics and Space Administration. + * All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ************************************************************************/ + +/** + * @file + * CFS Data Storage (DS) sample destination file table + * + * @note + * This source file creates a sample table that defines several + * data storage destination files using a variety of the options + * available. None of the file system details (name, size, etc.) + * are known at this time for the target platform. Therefore, + * the file pathnames are set to "set_by_cmd_b4_enable" which + * indicates that pathnames must be set by command before trying + * to enable any of the destination files. Max file size values + * should also be modified via command before using this table. + * + * Obviously, a better solution is to replace this sample table + * and the sample packet filter table (which references this + * table) with mission specific versions that define the data + * storage behavior appropriate for the platform. + * + * But, as long as the target platform has a file system, the + * sample data storage tables may be used to demonstrate data + * storage. + */ + +#include "cfe.h" +#include "cfe_tbl_filedef.h" +#include "ds_platform_cfg.h" +#include "ds_extern_typedefs.h" +#include "ds_msg.h" + +/* +** Sample Destination File Table Data +*/ +DS_DestFileTable_t DS_DestFileTable = { + /* .Descriptor = */ "Sample File Table Data", + /* .File = */ + { + /* File Index 00 - All Data */ + { + /* .Movename = */ DS_EMPTY_STRING, + /* .Pathname = */ "/d", + /* .Basename = */ "sv", + /* .Extension = */ ".ds", + + /* .FileNameType = */ DS_BY_TIME, + /* .EnableState = */ DS_ENABLED, + /* .MaxFileSize = */ (1024 * 1024 * 2), /* 2 M-bytes */ + /* .MaxFileAge = */ (60 * 60 * 8), /* 8 hours */ + /* .SequenceCount = */ DS_UNUSED, + }, + /* File Index 01 */ + { + /* .Movename = */ DS_EMPTY_STRING, + /* .Pathname = */ DS_EMPTY_STRING, + /* .Basename = */ DS_EMPTY_STRING, + /* .Extension = */ DS_EMPTY_STRING, + + /* .FileNameType = */ DS_UNUSED, + /* .EnableState = */ DS_UNUSED, + /* .MaxFileSize = */ DS_UNUSED, + /* .MaxFileAge = */ DS_UNUSED, + /* .SequenceCount = */ DS_UNUSED, + }, + /* File Index 02 */ + { + /* .Movename = */ DS_EMPTY_STRING, + /* .Pathname = */ DS_EMPTY_STRING, + /* .Basename = */ DS_EMPTY_STRING, + /* .Extension = */ DS_EMPTY_STRING, + + /* .FileNameType = */ DS_UNUSED, + /* .EnableState = */ DS_UNUSED, + /* .MaxFileSize = */ DS_UNUSED, + /* .MaxFileAge = */ DS_UNUSED, + /* .SequenceCount = */ DS_UNUSED, + }, + /* File Index 03 */ + { + /* .Movename = */ DS_EMPTY_STRING, + /* .Pathname = */ DS_EMPTY_STRING, + /* .Basename = */ DS_EMPTY_STRING, + /* .Extension = */ DS_EMPTY_STRING, + + /* .FileNameType = */ DS_UNUSED, + /* .EnableState = */ DS_UNUSED, + /* .MaxFileSize = */ DS_UNUSED, + /* .MaxFileAge = */ DS_UNUSED, + /* .SequenceCount = */ DS_UNUSED, + }, + /* File Index 04 */ + { + /* .Movename = */ DS_EMPTY_STRING, + /* .Pathname = */ DS_EMPTY_STRING, + /* .Basename = */ DS_EMPTY_STRING, + /* .Extension = */ DS_EMPTY_STRING, + + /* .FileNameType = */ DS_UNUSED, + /* .EnableState = */ DS_UNUSED, + /* .MaxFileSize = */ DS_UNUSED, + /* .MaxFileAge = */ DS_UNUSED, + /* .SequenceCount = */ DS_UNUSED, + }, + /* File Index 05 */ + { + /* .Movename = */ DS_EMPTY_STRING, + /* .Pathname = */ DS_EMPTY_STRING, + /* .Basename = */ DS_EMPTY_STRING, + /* .Extension = */ DS_EMPTY_STRING, + + /* .FileNameType = */ DS_UNUSED, + /* .EnableState = */ DS_UNUSED, + /* .MaxFileSize = */ DS_UNUSED, + /* .MaxFileAge = */ DS_UNUSED, + /* .SequenceCount = */ DS_UNUSED, + }, + /* File Index 06 */ + { + /* .Movename = */ DS_EMPTY_STRING, + /* .Pathname = */ DS_EMPTY_STRING, + /* .Basename = */ DS_EMPTY_STRING, + /* .Extension = */ DS_EMPTY_STRING, + + /* .FileNameType = */ DS_UNUSED, + /* .EnableState = */ DS_UNUSED, + /* .MaxFileSize = */ DS_UNUSED, + /* .MaxFileAge = */ DS_UNUSED, + /* .SequenceCount = */ DS_UNUSED, + }, + /* File Index 07 */ + { + /* .Movename = */ DS_EMPTY_STRING, + /* .Pathname = */ DS_EMPTY_STRING, + /* .Basename = */ DS_EMPTY_STRING, + /* .Extension = */ DS_EMPTY_STRING, + + /* .FileNameType = */ DS_UNUSED, + /* .EnableState = */ DS_UNUSED, + /* .MaxFileSize = */ DS_UNUSED, + /* .MaxFileAge = */ DS_UNUSED, + /* .SequenceCount = */ DS_UNUSED, + }, + /* File Index 08 */ + { + /* .Movename = */ DS_EMPTY_STRING, + /* .Pathname = */ DS_EMPTY_STRING, + /* .Basename = */ DS_EMPTY_STRING, + /* .Extension = */ DS_EMPTY_STRING, + + /* .FileNameType = */ DS_UNUSED, + /* .EnableState = */ DS_UNUSED, + /* .MaxFileSize = */ DS_UNUSED, + /* .MaxFileAge = */ DS_UNUSED, + /* .SequenceCount = */ DS_UNUSED, + }, + /* File Index 09 */ + { + /* .Movename = */ DS_EMPTY_STRING, + /* .Pathname = */ DS_EMPTY_STRING, + /* .Basename = */ DS_EMPTY_STRING, + /* .Extension = */ DS_EMPTY_STRING, + + /* .FileNameType = */ DS_UNUSED, + /* .EnableState = */ DS_UNUSED, + /* .MaxFileSize = */ DS_UNUSED, + /* .MaxFileAge = */ DS_UNUSED, + /* .SequenceCount = */ DS_UNUSED, + }, + /* File Index 10 */ + { + /* .Movename = */ DS_EMPTY_STRING, + /* .Pathname = */ DS_EMPTY_STRING, + /* .Basename = */ DS_EMPTY_STRING, + /* .Extension = */ DS_EMPTY_STRING, + + /* .FileNameType = */ DS_UNUSED, + /* .EnableState = */ DS_UNUSED, + /* .MaxFileSize = */ DS_UNUSED, + /* .MaxFileAge = */ DS_UNUSED, + /* .SequenceCount = */ DS_UNUSED, + }, + /* File Index 11 */ + { + /* .Movename = */ DS_EMPTY_STRING, + /* .Pathname = */ DS_EMPTY_STRING, + /* .Basename = */ DS_EMPTY_STRING, + /* .Extension = */ DS_EMPTY_STRING, + + /* .FileNameType = */ DS_UNUSED, + /* .EnableState = */ DS_UNUSED, + /* .MaxFileSize = */ DS_UNUSED, + /* .MaxFileAge = */ DS_UNUSED, + /* .SequenceCount = */ DS_UNUSED, + }, + /* File Index 12 */ + { + /* .Movename = */ DS_EMPTY_STRING, + /* .Pathname = */ DS_EMPTY_STRING, + /* .Basename = */ DS_EMPTY_STRING, + /* .Extension = */ DS_EMPTY_STRING, + + /* .FileNameType = */ DS_UNUSED, + /* .EnableState = */ DS_UNUSED, + /* .MaxFileSize = */ DS_UNUSED, + /* .MaxFileAge = */ DS_UNUSED, + /* .SequenceCount = */ DS_UNUSED, + }, + /* File Index 13 */ + { + /* .Movename = */ DS_EMPTY_STRING, + /* .Pathname = */ DS_EMPTY_STRING, + /* .Basename = */ DS_EMPTY_STRING, + /* .Extension = */ DS_EMPTY_STRING, + + /* .FileNameType = */ DS_UNUSED, + /* .EnableState = */ DS_UNUSED, + /* .MaxFileSize = */ DS_UNUSED, + /* .MaxFileAge = */ DS_UNUSED, + /* .SequenceCount = */ DS_UNUSED, + }, + /* File Index 14 */ + { + /* .Movename = */ DS_EMPTY_STRING, + /* .Pathname = */ DS_EMPTY_STRING, + /* .Basename = */ DS_EMPTY_STRING, + /* .Extension = */ DS_EMPTY_STRING, + + /* .FileNameType = */ DS_UNUSED, + /* .EnableState = */ DS_UNUSED, + /* .MaxFileSize = */ DS_UNUSED, + /* .MaxFileAge = */ DS_UNUSED, + /* .SequenceCount = */ DS_UNUSED, + }, + /* File Index 15 */ + { + /* .Movename = */ DS_EMPTY_STRING, + /* .Pathname = */ DS_EMPTY_STRING, + /* .Basename = */ DS_EMPTY_STRING, + /* .Extension = */ DS_EMPTY_STRING, + + /* .FileNameType = */ DS_UNUSED, + /* .EnableState = */ DS_UNUSED, + /* .MaxFileSize = */ DS_UNUSED, + /* .MaxFileAge = */ DS_UNUSED, + /* .SequenceCount = */ DS_UNUSED, + }, + }}; + +/* +** Sample Destination File Table Header +*/ +CFE_TBL_FILEDEF(DS_DestFileTable, DS.FILE_TBL, DS Destination File Table, ds_file_tbl.tbl) + +/************************/ +/* End of File Comment */ +/************************/ diff --git a/cfg/tryspace_defs/tables/ds_filter_tbl.c b/cfg/tryspace_defs/tables/ds_filter_tbl.c new file mode 100644 index 0000000..c9402f6 --- /dev/null +++ b/cfg/tryspace_defs/tables/ds_filter_tbl.c @@ -0,0 +1,2144 @@ +/************************************************************************ + * NASA Docket No. GSC-18,917-1, and identified as “CFS Data Storage + * (DS) application version 2.6.1” + * + * Copyright (c) 2021 United States Government as represented by the + * Administrator of the National Aeronautics and Space Administration. + * All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ************************************************************************/ + +/** + * @file + * CFS Data Storage (DS) sample packet filter table + * + * @note + * This source file creates a sample table that stores packets using + * several different destination storage files. Some packets have + * one filter that is set to store every packet in one file and + * another filter that will store every other packet in a second + * file. Also, some filters are disabled and thus will not store + * any packets. There is no real purpose to this particular set of + * filters other than to provide an example of how various fields + * in the table might be used. + */ + +#include "cfe.h" +#include "cfe_tbl_filedef.h" +#include "ds_platform_cfg.h" +#include "ds_extern_typedefs.h" +#include "ds_msg.h" + +/* +** Note: Include header files that define the message ID's for the +** mission specific list of packets that need to be stored. +*/ +#include "cfe_msgids.h" + +/* cFS */ +#include "ci_lab_msgids.h" +#include "ds_msgids.h" +#include "lc_msgids.h" +#include "sc_msgids.h" +#include "sch_msgids.h" +#include "to_lab_msgids.h" + +/* Components */ +#include "demo_msgids.h" +#include "eps_msgids.h" +#include "radio_msgids.h" + +/* +** Note: It is suggested that missions pre-define their file table +** index numbers in a public header file to be included by +** both the packet filter table source file and the destination +** file table source file. Common definitions may also be used +** when creating command database entries that require file +** index numbers for command arguments. +*/ +#define FILE_ALL_DATA 0 + +/* +** Reminder: +** Each filtering type relies on three filter factors, N, X, and O. +** N of X messages will be stored starting at offset O. +** +** Sequence based filtering - This type of filtering uses the packet sequence +** number to determine if the message should be filtered or not. If X is +** greater than zero, the message shall be stored if and only if the +** sequence number modulo X is less than N. For example, N=4, X=6 and O=2 +** will store 4 of 6 messages starting at offset 2. +*/ + +/* +** Sample packet filter table data +*/ +DS_FilterTable_t DS_FilterTable = { + /* .Descriptor = */ "Sample filter table data", + /* .Packet = */ + {/* Packet Index 000 */ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(CFE_ES_HK_TLM_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 001 */ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(CFE_EVS_HK_TLM_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 002 */ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(CFE_SB_HK_TLM_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 003 */ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(CFE_TBL_HK_TLM_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 004 */ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(CFE_TIME_HK_TLM_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 005 */ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(CFE_TIME_DIAG_TLM_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 006 */ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(CFE_EVS_LONG_EVENT_MSG_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 007 */ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(CFE_SB_STATS_TLM_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 008 */ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(CFE_ES_APP_TLM_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 009 */ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(CFE_TBL_REG_TLM_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 010 */ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(CFE_SB_ALLSUBS_TLM_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 011 */ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(CFE_SB_ONESUB_TLM_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 012 */ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(CFE_ES_MEMSTATS_TLM_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 013 */ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(DS_HK_TLM_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 014 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 015 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 016 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 017 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 018 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 019 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 020 - DEMO HK */ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(DEMO_HK_TLM_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 021 - DEMO DEVICE */ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(DEMO_DEVICE_TLM_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 022 - EPS HK*/ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(EPS_HK_TLM_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 023 - RADIO HK */ + {/* .MessageID = */ CFE_SB_MSGID_WRAP_VALUE(RADIO_HK_TLM_MID), + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {FILE_ALL_DATA, DS_BY_COUNT, 1, 1, 0}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 024 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 025 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 026 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 027 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 028 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 029 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 030 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 031 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 032 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 033 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 034 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 035 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 036 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 037 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 038 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 039 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 040 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 041 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 042 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 043 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 044 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 045 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 046 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 047 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 048 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 049 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 050 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 051 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 052 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 053 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 054 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 055 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 056 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 057 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 058 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 059 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 060 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 061 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 062 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 063 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 064 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 065 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 066 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 067 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 068 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 069 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 070 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 071 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 072 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 073 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 074 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 075 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 076 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 077 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 078 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 079 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 080 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 081 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 082 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 083 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 084 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 085 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 086 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 087 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 088 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 089 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 090 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 091 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 092 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 093 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 094 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 095 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 096 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 097 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 098 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 099 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 100 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 101 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 102 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 103 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 104 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 105 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 106 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 107 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 108 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 109 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 110 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 111 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 112 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 113 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 114 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 115 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 116 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 117 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 118 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 119 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 120 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 121 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 122 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 123 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 124 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 125 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 126 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 127 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 128 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 129 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 130 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 131 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 132 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 133 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 134 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 135 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 136 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 137 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 138 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 139 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 140 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 141 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 142 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 143 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 144 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 145 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 146 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 147 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 148 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 149 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 150 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 151 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 152 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 153 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 154 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 155 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 156 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 157 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 158 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 159 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 160 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 161 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 162 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 163 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 164 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 165 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 166 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 167 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 168 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 169 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 170 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 171 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 172 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 173 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 174 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 175 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 176 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 177 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 178 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 179 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 180 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 181 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 182 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 183 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 184 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 185 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 186 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 187 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 188 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 189 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 190 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 191 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 192 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 193 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 194 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 195 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 196 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 197 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 198 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 199 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 200 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 201 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 202 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 203 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 204 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 205 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 206 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 207 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 208 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 209 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 210 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 211 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 212 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 213 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 214 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 215 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 216 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 217 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 218 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 219 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 220 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 221 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 222 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 223 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 224 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 225 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 226 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 227 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 228 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 229 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 230 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 231 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 232 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 233 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 234 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 235 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 236 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 237 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 238 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 239 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 240 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 241 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 242 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 243 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 244 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 245 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 246 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 247 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 248 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 249 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 250 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 251 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 252 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 253 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 254 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}, + /* Packet Index 255 */ + {/* .MessageID = */ CFE_SB_MSGID_RESERVED, + /* .Filter = */ + {/* File table index, filter type, N, X, O */ + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}, + {DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED, DS_UNUSED}}}}}; + +/* +** Sample packet filter table header +*/ +CFE_TBL_FILEDEF(DS_FilterTable, DS.FILTER_TBL, DS Packet Filter Table, ds_filter_tbl.tbl) + +/************************/ +/* End of File Comment */ +/************************/ diff --git a/cfg/tryspace_defs/tables/lc_def_adt.c b/cfg/tryspace_defs/tables/lc_def_adt.c new file mode 100644 index 0000000..525a373 --- /dev/null +++ b/cfg/tryspace_defs/tables/lc_def_adt.c @@ -0,0 +1,2640 @@ +/************************************************************************ + * NASA Docket No. GSC-18,921-1, and identified as “CFS Limit Checker + * Application version 2.2.1” + * + * Copyright (c) 2021 United States Government as represented by the + * Administrator of the National Aeronautics and Space Administration. + * All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ************************************************************************/ + +/** + * @file + * Limit Checker (LC) default actionpoint definition table (ADT) + * + * @note + * This file provides a default ADT table that simply sets all + * actionpoint entries to "not used". It has been formatted to make + * it easy for mission developers to edit as needed (see the + * examples section below). + * + * LC will append a trailer string to the end of the text + * specified in the "EventText" field with additional information. + * See lc_action.h for the format. + */ + +/************************************************************************* +** Includes +*************************************************************************/ +#include "cfe_tbl_filedef.h" +#include "cfe_evs_extern_typedefs.h" +#include "lc_platform_cfg.h" +#include "lc_msgdefs.h" +#include "lc_tbl.h" +#include "lc_eventids.h" + +/************************************************************************* +** Examples +** (note that comment delimiters have been changed to '**') +** +** Actions that trigger off a single watchpoint: +** (see lc_def_wdt.c for companion watchpoint definitions) +** +** ** #100 ** +** { +** .DefaultState = LC_APSTATE_DISABLED, +** .MaxPassiveEvents = 2, +** .MaxPassFailEvents = 2, +** .MaxFailPassEvents = 2, +** .RTSId = RTS_ID_DIVINER_SAFE_MODE, +** .MaxFailsBeforeRTS = 60, +** .EventType = CFE_EVS_EventType_INFORMATION, +** .EventID = LC_BASE_AP_EID + 100, +** .EventText = { "Diviner: low input volt (1)" }, +** .RPNEquation = { ** (WP_112) ** +** 112, +** LC_RPN_EQUAL +** } +** }, +** +** ** #101 ** +** { +** .DefaultState = LC_APSTATE_DISABLED, +** .MaxPassiveEvents = 2, +** .MaxPassFailEvents = 2, +** .MaxFailPassEvents = 2, +** .RTSId = RTS_ID_DIVINER_SAFE_MODE, +** .MaxFailsBeforeRTS = 3, +** .EventType = CFE_EVS_EventType_INFORMATION, +** .EventID = LC_BASE_AP_EID + 101, +** .EventText = { "Diviner: low input volt (2)" }, +** .RPNEquation = { ** (WP_113) ** +** 113, +** LC_RPN_EQUAL +** } +** }, +** +** Examples of more complex Reverse Polish Notation expressions: +** +** ** #43 ** +** { +** .DefaultState = LC_APSTATE_ENABLED, +** .MaxPassiveEvents = 2, +** .MaxPassFailEvents = 2, +** .MaxFailPassEvents = 2, +** .RTSId = RTS_ID_ACS_EXIT_THRUSTER_MODE, +** .MaxFailsBeforeRTS = 10, +** .EventType = CFE_EVS_EventType_INFORMATION, +** .EventID = LC_BASE_AP_EID + 43, +** .EventText = { "GNC: delta-V sys attitude" }, +** .RPNEquation = { ** (WP_26 && !WP_61 && !WP_64 && !WP_45 && WP_46 && WP_47) ** +** 26, 61, +** LC_RPN_NOT, +** LC_RPN_AND, +** 64, +** LC_RPN_NOT, +** LC_RPN_AND, +** 45, +** LC_RPN_NOT, +** LC_RPN_AND, +** 46, +** LC_RPN_AND, +** 47, +** LC_RPN_AND, +** LC_RPN_EQUAL +** } +** }, +** +** ** #47 ** +** { +** .DefaultState = LC_APSTATE_ENABLED, +** .MaxPassiveEvents = 2, +** .MaxPassFailEvents = 2, +** .MaxFailPassEvents = 2, +** .RTSId = RTS_ID_ACS_POWER_OFF_ALL_RW, +** .MaxFailsBeforeRTS = 2, +** .EventType = CFE_EVS_EventType_INFORMATION, +** .EventID = LC_BASE_AP_EID + 47, +** .EventText = { "GNC: wheel on, attached" }, +** .RPNEquation = { ** (!WP_80 && (WP_48 || WP_49 || WP_50 || WP_51))) ** +** 80, +** LC_RPN_NOT, +** 48, 49, 50, 51, +** LC_RPN_OR, +** LC_RPN_OR, +** LC_RPN_OR, +** LC_RPN_AND, +** LC_RPN_EQUAL +** } +** }, +** +** ** #142 ** +** { +** .DefaultState = LC_APSTATE_DISABLED, +** .MaxPassiveEvents = 2, +** .MaxPassFailEvents = 2, +** .MaxFailPassEvents = 2, +** .RTSId = RTS_ID_LEND_POWER_OFF, +** .MaxFailsBeforeRTS = 60, +** .EventType = CFE_EVS_EventType_INFORMATION, +** .EventID = LC_BASE_AP_EID + 142, +** .EventText = { "LEND: comp over temp #1" }, +** .RPNEquation = { ** (WP_142 && WP_143) || (WP_144 && WP_145) || (WP_146 && WP_147) ** +** 142, 143, +** LC_RPN_AND, +** 144, 145, +** LC_RPN_AND, +** 146, 147, +** LC_RPN_AND, +** LC_RPN_OR, +** LC_RPN_OR, +** LC_RPN_EQUAL +** } +** }, +** +*************************************************************************/ + +/************************************************************************* +** Exported Data +*************************************************************************/ +/* +** Table file header +*/ +CFE_TBL_FileDef_t CFE_TBL_FileDef = {"LC_ADT", LC_APP_NAME "." LC_ADT_TABLENAME, "LC actionpoint definition table", + "lc_def_adt.tbl", (sizeof(LC_ADTEntry_t) * LC_MAX_ACTIONPOINTS)}; + +/* +** Default actionpoint definition table (ADT) data +*/ +LC_ADTEntry_t LC_ADT[LC_MAX_ACTIONPOINTS] = { + /* #0 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #1 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #2 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #3 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #4 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #5 - Radio Enable */ + {.DefaultState = LC_APSTATE_ACTIVE, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 5, + .MaxFailsBeforeRTS = 1, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 5, + .EventText = {"Enabling radio"}, + .RPNEquation = + {/* (WP_5) */ + 5, LC_RPN_EQUAL}}, + + /* #6 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #7 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #8 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #9 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #10 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #11 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #12 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #13 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #14 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #15 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #16 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #17 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #18 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #19 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #20 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #21 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #22 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #23 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #24 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #25 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #26 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #27 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #28 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #29 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #30 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #31 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #32 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #33 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #34 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #35 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #36 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #37 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #38 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #39 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #40 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #41 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #42 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #43 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #44 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #45 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #46 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #47 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #48 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #49 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #50 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #51 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #52 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #53 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #54 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #55 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #56 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #57 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #58 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #59 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #60 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #61 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #62 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #63 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #64 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #65 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #66 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #67 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #68 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #69 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #70 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #71 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #72 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #73 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #74 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #75 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #76 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #77 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #78 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #79 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #80 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #81 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #82 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #83 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #84 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #85 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #86 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #87 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #88 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #89 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #90 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #91 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #92 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #93 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #94 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #95 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #96 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #97 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #98 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #99 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #100 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #101 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #102 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #103 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #104 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #105 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #106 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #107 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #108 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #109 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #110 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #111 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #112 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #113 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #114 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #115 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #116 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #117 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #118 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #119 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #120 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #121 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #122 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #123 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #124 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #125 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #126 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #127 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #128 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #129 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #130 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #131 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #132 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #133 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #134 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #135 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #136 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #137 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #138 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #139 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #140 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #141 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #142 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #143 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #144 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #145 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #146 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #147 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #148 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #149 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #150 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #151 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #152 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #153 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #154 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #155 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #156 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #157 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #158 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #159 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #160 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #161 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #162 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #163 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #164 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #165 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #166 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #167 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #168 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #169 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #170 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #171 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #172 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #173 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #174 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = + {/* (WP_0) */ + 0, LC_RPN_EQUAL}}, + + /* #175 (unused) */ + {.DefaultState = LC_APSTATE_NOT_USED, + .MaxPassiveEvents = 0, + .MaxPassFailEvents = 0, + .MaxFailPassEvents = 0, + .RTSId = 0, + .MaxFailsBeforeRTS = 0, + .EventType = CFE_EVS_EventType_INFORMATION, + .EventID = 0, + .EventText = {" "}, + .RPNEquation = { /* (WP_0) */ + 0, LC_RPN_EQUAL}}}; /* end LC_DefaultADT */ diff --git a/cfg/tryspace_defs/tables/lc_def_wdt.c b/cfg/tryspace_defs/tables/lc_def_wdt.c new file mode 100644 index 0000000..51ab5bf --- /dev/null +++ b/cfg/tryspace_defs/tables/lc_def_wdt.c @@ -0,0 +1,2222 @@ +/************************************************************************ + * NASA Docket No. GSC-18,921-1, and identified as “CFS Limit Checker + * Application version 2.2.1” + * + * Copyright (c) 2021 United States Government as represented by the + * Administrator of the National Aeronautics and Space Administration. + * All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ************************************************************************/ + +/** + * @file + * Limit Checker (LC) default watchpoint definition table (WDT) + * + * @note + * This file provides a default WDT table that simply sets all + * watchpoint entries to "not used". It has been formatted to make + * it easy for mission developers to edit as needed (see the + * examples section below). + */ + +/************************************************************************* +** Includes +*************************************************************************/ +#include "cfe_tbl_filedef.h" +#include "cfe_sb_api_typedefs.h" +#include "lc_platform_cfg.h" +#include "lc_msgdefs.h" +#include "lc_tbl.h" + +/* Component includes */ +#include "radio_msgids.h" + +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-braces" +#endif + +/************************************************************************* +** Examples +** (note that comment delimiters have been changed to '**') +** +** Incremental tests on the same data point: +** (see lc_def_adt.c for companion actionpoint definitions) +** +** ** #112 (Diviner - low s/c bus voltage, level 1) ** +** { +** .DataType = LC_DATA_WATCH_UWORD_BE, +** .OperatorID = LC_OPER_LT, +** .MessageID = PSE_FAST_HK_TLM_MID, +** .WatchpointOffset = 184, +** .BitMask = LC_BITMASK_NONE, +** .CustomFuncArgument = 0, +** .ResultAgeWhenStale = 0, +** .ComparisonValue.Unsigned16in32.Unsigned16 = 3417, +** }, +** +** ** #113 (Diviner - low s/c bus voltage, level 2) ** +** { +** .DataType = LC_DATA_WATCH_UWORD_BE, +** .OperatorID = LC_OPER_LT, +** .MessageID = PSE_FAST_HK_TLM_MID, +** .WatchpointOffset = 184, +** .BitMask = LC_BITMASK_NONE, +** .CustomFuncArgument = 0, +** .ResultAgeWhenStale = 0, +** .ComparisonValue.Unsigned16in32.Unsigned16 = 3319, +** }, +** +** Use of bitmasking and a custom function: +** +** ** #154 (IRU - 24 bit value with custom transform) ** +** { +** .DataType = LC_DATA_WATCH_UDWORD_BE, +** .OperatorID = LC_OPER_CUSTOM, +** .MessageID = IRU_FAST_HK_TLM_MID, +** .WatchpointOffset = 76, +** .BitMask = 0x00FFFFFF, +** .CustomFuncArgument = LC_CUSTOM_XYZ_TRANSFORM, +** .ResultAgeWhenStale = 0, +** .ComparisonValue.Unsigned32 = 1050000, +** }, +** +*************************************************************************/ + +/************************************************************************* +** Exported Data +*************************************************************************/ +/* +** Table file header +*/ +CFE_TBL_FileDef_t CFE_TBL_FileDef = {"LC_WDT", LC_APP_NAME "." LC_WDT_TABLENAME, "LC watchpoint definition table", + "lc_def_wdt.tbl", (sizeof(LC_WDTEntry_t) * LC_MAX_WATCHPOINTS)}; + +/* +** Default watchpoint definition table (WDT) data +*/ +LC_WDTEntry_t LC_WDT[LC_MAX_WATCHPOINTS] = { + /* #0 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #1 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #2 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #3 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #4 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #5 - Radio Enable */ + { + .DataType = LC_DATA_WATCH_UBYTE, + .OperatorID = LC_OPER_NE, + .MessageID = RADIO_HK_TLM_MID, + .WatchpointOffset = 15, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned8 = 1, + }, + + /* #6 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #7 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #8 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #9 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #10 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #11 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #12 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #13 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #14 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #15 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #16 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #17 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #18 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #19 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #20 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #21 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #22 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #23 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #24 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #25 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #26 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #27 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #28 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #29 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #30 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #31 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #32 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #33 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #34 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #35 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #36 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #37 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #38 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #39 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #40 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #41 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #42 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #43 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #44 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #45 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #46 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #47 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #48 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #49 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #50 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #51 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #52 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #53 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #54 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #55 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #56 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #57 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #58 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #59 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #60 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #61 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #62 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #63 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #64 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #65 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #66 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #67 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #68 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #69 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #70 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #71 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #72 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #73 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #74 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #75 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #76 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #77 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #78 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #79 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #80 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #81 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #82 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #83 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #84 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #85 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #86 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #87 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #88 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #89 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #90 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #91 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #92 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #93 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #94 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #95 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #96 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #97 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #98 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #99 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #100 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #101 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #102 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #103 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #104 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #105 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #106 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #107 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #108 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #109 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #110 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #111 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #112 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #113 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #114 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #115 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #116 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #117 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #118 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #119 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #120 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #121 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #122 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #123 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #124 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #125 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #126 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #127 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #128 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #129 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #130 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #131 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #132 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #133 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #134 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #135 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #136 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #137 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #138 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #139 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #140 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #141 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #142 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #143 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #144 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #145 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #146 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #147 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #148 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #149 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #150 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #151 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #152 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #153 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #154 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #155 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #156 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #157 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #158 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #159 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #160 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #161 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #162 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #163 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #164 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #165 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #166 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #167 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #168 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #169 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #170 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #171 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #172 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #173 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #174 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }, + + /* #175 (unused) */ + { + .DataType = LC_DATA_WATCH_NOT_USED, + .OperatorID = LC_OPER_NONE, + .MessageID = CFE_SB_MSGID_RESERVED, + .WatchpointOffset = 0, + .BitMask = LC_BITMASK_NONE, + .CustomFuncArgument = 0, + .ResultAgeWhenStale = 0, + .ComparisonValue.Unsigned32 = 0, + }}; /* end LC_DefaultWDT */ + +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif diff --git a/cfg/tryspace_defs/tables/radio_sub.c b/cfg/tryspace_defs/tables/radio_sub.c new file mode 100644 index 0000000..3716941 --- /dev/null +++ b/cfg/tryspace_defs/tables/radio_sub.c @@ -0,0 +1,69 @@ +/************************************************************************ + * Radio Downlink Subscription Table + ************************************************************************/ + +#include "cfe_tbl_filedef.h" /* Required to obtain the CFE_TBL_FILEDEF macro definition */ +#include "cfe_sb_api_typedefs.h" +#include "cfe_msgids.h" +#include "radio_sub_tbl.h" + +/* cFS */ +#include "cf_msgids.h" +#include "ds_msgids.h" +#include "fm_msgids.h" +#include "lc_msgids.h" +#include "sc_msgids.h" +#include "sch_msgids.h" + +/* Components */ +#include "adcs_msgids.h" +#include "demo_msgids.h" +#include "eps_msgids.h" +#include "radio_msgids.h" + +/* Local Structures */ +#define CF_CONFIG_TLM_MID 0x08B2 +#define CF_PDU_TLM_MID 0x0FFD + +RADIO_Subs_t RADIO_Subs = {.Subs = { + /* cFE Core */ + {CFE_SB_MSGID_WRAP_VALUE(CFE_ES_HK_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_EVS_HK_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_SB_HK_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_TBL_HK_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_TIME_HK_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_TIME_DIAG_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_SB_STATS_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_TBL_REG_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_EVS_LONG_EVENT_MSG_MID), {0, 0}, 32}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_EVS_SHORT_EVENT_MSG_MID), {0, 0}, 32}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_ES_APP_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_ES_MEMSTATS_TLM_MID), {0, 0}, 4}, + + /* cFS */ + {CFE_SB_MSGID_WRAP_VALUE(CF_CONFIG_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CF_HK_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CF_PDU_TLM_MID), {0,0}, 32}, + {CFE_SB_MSGID_WRAP_VALUE(DS_HK_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(FM_HK_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(FM_FILE_INFO_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(FM_DIR_LIST_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(FM_OPEN_FILES_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(FM_FREE_SPACE_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(LC_HK_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(SC_HK_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(SCH_HK_TLM_MID), {0,0}, 4}, + + /* Components */ + {CFE_SB_MSGID_WRAP_VALUE(ADCS_HK_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(DEMO_HK_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(DEMO_DEVICE_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(EPS_HK_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(EPS_DEVICE_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(RADIO_HK_TLM_MID), {0, 0}, 4}, + + /* CFE_SB_MSGID_RESERVED entry to mark the end of valid MsgIds */ + {CFE_SB_MSGID_RESERVED, {0, 0}, 0} +}}; + +CFE_TBL_FILEDEF(RADIO_Subs, RADIO_APP.RADIO_Subs, Radio Downlink Sub Tbl, radio_sub.tbl) diff --git a/cfg/tryspace_defs/tables/sc_rts001.c b/cfg/tryspace_defs/tables/sc_rts001.c new file mode 100644 index 0000000..d5da436 --- /dev/null +++ b/cfg/tryspace_defs/tables/sc_rts001.c @@ -0,0 +1,126 @@ +/************************************************************************ + * NASA Docket No. GSC-18,924-1, and identified as “Core Flight + * System (cFS) Stored Command Application version 3.1.1” + * + * Copyright (c) 2021 United States Government as represented by the + * Administrator of the National Aeronautics and Space Administration. + * All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ************************************************************************/ + +/** + * @file + * CFS Stored Command (SC) sample RTS table 1 + * + * The following source code demonstrates how to create a sample + * Stored Command RTS table using the software defined command structures. + * It's also possible to create this table via alternative tools + * (ground system) and or system agnostic data definitions (XTCE/EDS/JSON). + * + * This source file creates a sample RTS table that contains only + * the following commands that are scheduled as follows: + * + * SC NOOP command, execution wakeup count relative to start of RTS = 0 + * SC Enable RTS #2 command, execution wakeup count relative to prev cmd = 5 + * SC Start RTS #2 command, execution wakeup count relative to prev cmd = 5 + */ + +#include "cfe.h" +#include "cfe_tbl_filedef.h" + +#include "sc_tbldefs.h" /* defines SC table headers */ +#include "sc_platform_cfg.h" /* defines table buffer size */ +#include "sc_msgdefs.h" /* defines SC command code values */ +#include "sc_msgids.h" /* defines SC packet msg ID's */ +#include "sc_msg.h" /* defines SC message structures */ + +/* Specific includes */ +#include "ds_msg.h" +#include "ds_msgdefs.h" +#include "ds_msgids.h" +#include "lc_msg.h" +#include "lc_msgdefs.h" +#include "lc_msgids.h" +#include "sc_msg.h" +#include "sc_msgdefs.h" +#include "sc_msgids.h" +#include "to_lab_msgids.h" +#include "to_lab_msg.h" + +/* Note: Assumes SC_PLATFORM_ENABLE_HEADER_UPDATE is true */ + +/* Custom table structure, modify as needed to add desired commands */ +typedef struct +{ + /* 1 - Enable DS */ + SC_RtsEntryHeader_t hdr1; + DS_AppStateCmd_t cmd1; + /* 2 - Enable Debug */ + SC_RtsEntryHeader_t hdr2; + TO_LAB_EnableOutputCmd_t cmd2; + /* 3 - Enable LC */ + SC_RtsEntryHeader_t hdr3; + LC_SetLCStateCmd_t cmd3; + /* 4 - Enable RTS Group */ + SC_RtsEntryHeader_t hdr4; + SC_EnableRtsGrpCmd_t cmd4; + /* 5 - Start RTS #3 () */ + SC_RtsEntryHeader_t hdr5; + SC_StartRtsCmd_t cmd5; + +} SC_RtsStruct001_t; + +/* Define the union to size the table correctly */ +typedef union +{ + SC_RtsStruct001_t rts; + uint16 buf[SC_RTS_BUFF_SIZE]; +} SC_RtsTable001_t; + +/* Helper macro to get size of structure elements */ +#define SC_MEMBER_SIZE(member) (sizeof(((SC_RtsStruct001_t *)0)->member)) + +/* Used designated initializers to be verbose, modify as needed/desired */ +SC_RtsTable001_t SC_Rts001 = +{ + /* 1 - Enable DS */ + .rts.hdr1.WakeupCount = 5, + .rts.cmd1.CommandHeader = CFE_MSG_CMD_HDR_INIT(DS_CMD_MID, SC_MEMBER_SIZE(cmd1), DS_SET_APP_STATE_CC, 0x00), + .rts.cmd1.Payload.EnableState = 0x0001, + .rts.cmd1.Payload.Padding = 0x0000, + + /* 2 - Enable Debug */ + .rts.hdr2.WakeupCount = 1, + .rts.cmd2.CommandHeader = CFE_MSG_CMD_HDR_INIT(TO_LAB_CMD_MID, SC_MEMBER_SIZE(cmd2), TO_LAB_OUTPUT_ENABLE_CC, 0x00), + .rts.cmd2.Payload.dest_IP = "tryspace-gsw", + + /* 3 - Enable LC */ + .rts.hdr3.WakeupCount = 1, + .rts.cmd3.CommandHeader = CFE_MSG_CMD_HDR_INIT(LC_CMD_MID, SC_MEMBER_SIZE(cmd3), LC_SET_LC_STATE_CC, 0x00), + .rts.cmd3.Payload.NewLCState = LC_STATE_ACTIVE, + .rts.cmd3.Payload.Padding = 0x0000, + + /* 4 - Enable RTS Group */ + .rts.hdr4.WakeupCount = 1, + .rts.cmd4.CommandHeader = CFE_MSG_CMD_HDR_INIT(SC_CMD_MID, SC_MEMBER_SIZE(cmd4), SC_ENABLE_RTS_GRP_CC, 0x00), + .rts.cmd4.Payload.FirstRtsNum = 0x0001, + .rts.cmd4.Payload.LastRtsNum = 0x0008, + + /* 5 - Start RTS #3 (Initialization) */ + .rts.hdr5.WakeupCount = 1, + .rts.cmd5.CommandHeader = CFE_MSG_CMD_HDR_INIT(SC_CMD_MID, SC_MEMBER_SIZE(cmd5), SC_START_RTS_CC, 0x00), + .rts.cmd5.Payload.RtsNum = 0x0003, + .rts.cmd5.Payload.Padding = 0x0000, +}; + +/* Macro for table structure */ +CFE_TBL_FILEDEF(SC_Rts001, SC.RTS_TBL001, SC Example RTS_TBL001, sc_rts001.tbl) diff --git a/cfg/tryspace_defs/tables/sc_rts003.c b/cfg/tryspace_defs/tables/sc_rts003.c new file mode 100644 index 0000000..5e80338 --- /dev/null +++ b/cfg/tryspace_defs/tables/sc_rts003.c @@ -0,0 +1,81 @@ +/************************************************************************ + * NASA Docket No. GSC-18,924-1, and identified as “Core Flight + * System (cFS) Stored Command Application version 3.1.1” + * + * Copyright (c) 2021 United States Government as represented by the + * Administrator of the National Aeronautics and Space Administration. + * All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ************************************************************************/ + +/** + * @file + * CFS Stored Command (SC) sample RTS table 1 + * + * The following source code demonstrates how to create a sample + * Stored Command RTS table using the software defined command structures. + * It's also possible to create this table via alternative tools + * (ground system) and or system agnostic data definitions (XTCE/EDS/JSON). + * + * This source file creates a sample RTS table that contains only + * the following commands that are scheduled as follows: + * + * SC NOOP command, execution wakeup count relative to start of RTS = 0 + * SC Enable RTS #2 command, execution wakeup count relative to prev cmd = 5 + * SC Start RTS #2 command, execution wakeup count relative to prev cmd = 5 + */ + +#include "cfe.h" +#include "cfe_tbl_filedef.h" + +#include "sc_tbldefs.h" /* defines SC table headers */ +#include "sc_platform_cfg.h" /* defines table buffer size */ +#include "sc_msgdefs.h" /* defines SC command code values */ +#include "sc_msgids.h" /* defines SC packet msg ID's */ +#include "sc_msg.h" /* defines SC message structures */ + +/* Specific includes */ +#include "cfe_es_msgstruct.h" +#include "cfe_es_msgids.h" + +/* Note: Assumes SC_PLATFORM_ENABLE_HEADER_UPDATE is true */ + +/* Custom table structure, modify as needed to add desired commands */ +typedef struct +{ + /* 1 - ES NOOP */ + SC_RtsEntryHeader_t hdr1; + CFE_ES_NoopCmd_t cmd1; + +} SC_RtsStruct003_t; + +/* Define the union to size the table correctly */ +typedef union +{ + SC_RtsStruct003_t rts; + uint16 buf[SC_RTS_BUFF_SIZE]; +} SC_RtsTable003_t; + +/* Helper macro to get size of structure elements */ +#define SC_MEMBER_SIZE(member) (sizeof(((SC_RtsStruct003_t *)0)->member)) + +/* Used designated initializers to be verbose, modify as needed/desired */ +SC_RtsTable003_t SC_Rts003 = +{ + /* 1 - ES NOOP */ + .rts.hdr1.WakeupCount = 1, + .rts.cmd1.CommandHeader = CFE_MSG_CMD_HDR_INIT(CFE_ES_CMD_MID, SC_MEMBER_SIZE(cmd1), 0x00, 0x00), + +}; + +/* Macro for table structure */ +CFE_TBL_FILEDEF(SC_Rts003, SC.RTS_TBL003, Initialization RTS_TBL003, sc_rts003.tbl) diff --git a/cfg/tryspace_defs/tables/sc_rts005.c b/cfg/tryspace_defs/tables/sc_rts005.c new file mode 100644 index 0000000..0db31ef --- /dev/null +++ b/cfg/tryspace_defs/tables/sc_rts005.c @@ -0,0 +1,106 @@ +/************************************************************************ + * NASA Docket No. GSC-18,924-1, and identified as “Core Flight + * System (cFS) Stored Command Application version 3.1.1” + * + * Copyright (c) 2021 United States Government as represented by the + * Administrator of the National Aeronautics and Space Administration. + * All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ************************************************************************/ + +/** + * @file + * CFS Stored Command (SC) sample RTS table 1 + * + * The following source code demonstrates how to create a sample + * Stored Command RTS table using the software defined command structures. + * It's also possible to create this table via alternative tools + * (ground system) and or system agnostic data definitions (XTCE/EDS/JSON). + * + * This source file creates a sample RTS table that contains only + * the following commands that are scheduled as follows: + * + * SC NOOP command, execution wakeup count relative to start of RTS = 0 + * SC Enable RTS #2 command, execution wakeup count relative to prev cmd = 5 + * SC Start RTS #2 command, execution wakeup count relative to prev cmd = 5 + */ + +#include "cfe.h" +#include "cfe_tbl_filedef.h" + +#include "sc_tbldefs.h" /* defines SC table headers */ +#include "sc_platform_cfg.h" /* defines table buffer size */ +#include "sc_msgdefs.h" /* defines SC command code values */ +#include "sc_msgids.h" /* defines SC packet msg ID's */ +#include "sc_msg.h" /* defines SC message structures */ + +/* Specific includes */ +#include "lc_msg.h" +#include "lc_msgdefs.h" +#include "lc_msgids.h" +#include "radio_msg.h" +#include "radio_msgids.h" + +/* Note: Assumes SC_PLATFORM_ENABLE_HEADER_UPDATE is true */ + +/* Custom table structure, modify as needed to add desired commands */ +typedef struct +{ + /* 1 - Enable Radio */ + SC_RtsEntryHeader_t hdr1; + RADIO_NoArgs_cmd_t cmd1; + + /* 2 - Set Radio Mode - Rx Only */ + SC_RtsEntryHeader_t hdr2; + RADIO_Config_cmd_t cmd2; + + /* 3 - Reset AP5 */ + SC_RtsEntryHeader_t hdr3; + LC_ResetAPStatsCmd_t cmd3; + +} SC_RtsStruct005_t; + +/* Define the union to size the table correctly */ +typedef union +{ + SC_RtsStruct005_t rts; + uint16 buf[SC_RTS_BUFF_SIZE]; +} SC_RtsTable005_t; + +/* Helper macro to get size of structure elements */ +#define SC_MEMBER_SIZE(member) (sizeof(((SC_RtsStruct005_t *)0)->member)) + +/* Used designated initializers to be verbose, modify as needed/desired */ +SC_RtsTable005_t SC_Rts005 = +{ + /* 1 - Enable Radio */ + .rts.hdr1.WakeupCount = 1, + .rts.cmd1.CmdHeader = CFE_MSG_CMD_HDR_INIT(RADIO_CMD_MID, SC_MEMBER_SIZE(cmd1), RADIO_ENABLE_CC, 0x00), + + /* 2 - Set Radio Configuration */ + .rts.hdr2.WakeupCount = 1, + .rts.cmd2.CmdHeader = CFE_MSG_CMD_HDR_INIT(RADIO_CMD_MID, SC_MEMBER_SIZE(cmd2), RADIO_CONFIG_CC, 0x00), + .rts.cmd2.DeviceCfg.Mode = RADIO_MODE_RX, + .rts.cmd2.DeviceCfg.RxSpeedSetting = 1, + .rts.cmd2.DeviceCfg.RxWavelengthSetting = 2, + .rts.cmd2.DeviceCfg.TxSpeedSetting = 0, + .rts.cmd2.DeviceCfg.TxWavelengthSetting = 0, + + /* 3 - Reset AP5 */ + .rts.hdr3.WakeupCount = 1, + .rts.cmd3.CommandHeader = CFE_MSG_CMD_HDR_INIT(LC_CMD_MID, SC_MEMBER_SIZE(cmd3), LC_RESET_AP_STATS_CC, 0x00), + .rts.cmd3.Payload.APNumber = 5, + .rts.cmd3.Payload.Padding = 0x00, +}; + +/* Macro for table structure */ +CFE_TBL_FILEDEF(SC_Rts005, SC.RTS_TBL005, Radio Enable RTS_TBL005, sc_rts005.tbl) diff --git a/cfg/tryspace_defs/tables/sc_rts006.c b/cfg/tryspace_defs/tables/sc_rts006.c new file mode 100644 index 0000000..df94cc9 --- /dev/null +++ b/cfg/tryspace_defs/tables/sc_rts006.c @@ -0,0 +1,101 @@ +/************************************************************************ + * NASA Docket No. GSC-18,924-1, and identified as “Core Flight + * System (cFS) Stored Command Application version 3.1.1” + * + * Copyright (c) 2021 United States Government as represented by the + * Administrator of the National Aeronautics and Space Administration. + * All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ************************************************************************/ + +/** + * @file + * CFS Stored Command (SC) sample RTS table 1 + * + * The following source code demonstrates how to create a sample + * Stored Command RTS table using the software defined command structures. + * It's also possible to create this table via alternative tools + * (ground system) and or system agnostic data definitions (XTCE/EDS/JSON). + * + * This source file creates a sample RTS table that contains only + * the following commands that are scheduled as follows: + * + * SC NOOP command, execution wakeup count relative to start of RTS = 0 + * SC Enable RTS #2 command, execution wakeup count relative to prev cmd = 5 + * SC Start RTS #2 command, execution wakeup count relative to prev cmd = 5 + */ + +#include "cfe.h" +#include "cfe_tbl_filedef.h" + +#include "sc_tbldefs.h" /* defines SC table headers */ +#include "sc_platform_cfg.h" /* defines table buffer size */ +#include "sc_msgdefs.h" /* defines SC command code values */ +#include "sc_msgids.h" /* defines SC packet msg ID's */ +#include "sc_msg.h" /* defines SC message structures */ + +/* Specific includes */ +#include "lc_msg.h" +#include "lc_msgdefs.h" +#include "lc_msgids.h" +#include "radio_msg.h" +#include "radio_msgids.h" + +/* Note: Assumes SC_PLATFORM_ENABLE_HEADER_UPDATE is true */ + +/* Custom table structure, modify as needed to add desired commands */ +typedef struct +{ + /* 1 - Set Radio Mode - Duplex */ + SC_RtsEntryHeader_t hdr1; + RADIO_Config_cmd_t cmd1; + + /* 2 - Set Radio Mode - Rx Only */ + SC_RtsEntryHeader_t hdr2; + RADIO_Config_cmd_t cmd2; + +} SC_RtsStruct006_t; + +/* Define the union to size the table correctly */ +typedef union +{ + SC_RtsStruct006_t rts; + uint16 buf[SC_RTS_BUFF_SIZE]; +} SC_RtsTable006_t; + +/* Helper macro to get size of structure elements */ +#define SC_MEMBER_SIZE(member) (sizeof(((SC_RtsStruct006_t *)0)->member)) + +/* Used designated initializers to be verbose, modify as needed/desired */ +SC_RtsTable006_t SC_Rts006 = +{ + /* 1 - Set Radio Mode - Duplex */ + .rts.hdr1.WakeupCount = 1, + .rts.cmd1.CmdHeader = CFE_MSG_CMD_HDR_INIT(RADIO_CMD_MID, SC_MEMBER_SIZE(cmd1), RADIO_CONFIG_CC, 0x00), + .rts.cmd1.DeviceCfg.Mode = RADIO_MODE_DUPLEX, + .rts.cmd1.DeviceCfg.RxSpeedSetting = 1, + .rts.cmd1.DeviceCfg.RxWavelengthSetting = 2, + .rts.cmd1.DeviceCfg.TxSpeedSetting = 3, + .rts.cmd1.DeviceCfg.TxWavelengthSetting = 4, + + /* 2 - Set Radio Mode - Rx Only */ + .rts.hdr2.WakeupCount = 480, /* 8 minutes */ + .rts.cmd2.CmdHeader = CFE_MSG_CMD_HDR_INIT(RADIO_CMD_MID, SC_MEMBER_SIZE(cmd2), RADIO_CONFIG_CC, 0x00), + .rts.cmd2.DeviceCfg.Mode = RADIO_MODE_RX, + .rts.cmd2.DeviceCfg.RxSpeedSetting = 1, + .rts.cmd2.DeviceCfg.RxWavelengthSetting = 2, + .rts.cmd2.DeviceCfg.TxSpeedSetting = 0, + .rts.cmd2.DeviceCfg.TxWavelengthSetting = 0, +}; + +/* Macro for table structure */ +CFE_TBL_FILEDEF(SC_Rts006, SC.RTS_TBL006, Start Pass RTS_TBL006, sc_rts006.tbl) diff --git a/cfg/tryspace_defs/tables/sch_def_msgtbl.c b/cfg/tryspace_defs/tables/sch_def_msgtbl.c new file mode 100644 index 0000000..a1a7b4b --- /dev/null +++ b/cfg/tryspace_defs/tables/sch_def_msgtbl.c @@ -0,0 +1,428 @@ +/* +** $Id: sch_def_msgtbl.c 1.3 2017/06/21 15:28:56EDT mdeschu Exp $ +** +** Copyright (c) 2007-2014 United States Government as represented by the +** Administrator of the National Aeronautics and Space Administration. +** All Other Rights Reserved. +** +** This software was created at NASA's Goddard Space Flight Center. +** This software is governed by the NASA Open Source Agreement and may be +** used, distributed and modified only pursuant to the terms of that +** agreement. +** +** Purpose: Scheduler (SCH) default message definition table data +** +** Author: +** +** Notes: +** +*/ + +/************************************************************************* +** +** Include section +** +**************************************************************************/ + +#include "cfe.h" +#include "cfe_endian.h" +#include "cfe_tbl_filedef.h" +#include "sch_platform_cfg.h" +#include "sch_tbldefs.h" + +#include "cfe_msgids.h" +#include "cf_msgids.h" +/* #include "ci_lab_msgids.h" */ +/* #include "cs_msgids.h" */ +#include "ds_msgids.h" +/* #include "fm_msgids.h" */ +/* #include "hk_msgids.h" */ +/* #include "hs_msgids.h" */ +#include "lc_interface_cfg.h" +#include "lc_msgids.h" +/* #include "md_msgids.h" */ +/* #include "mm_msgids.h" */ +#include "sc_msgids.h" +#include "sch_msgids.h" +/* #include "to_lab_msgids.h" */ + +/* Components*/ +#include "adcs_msgids.h" +#include "demo_msgids.h" +#include "eps_msgids.h" +#include "radio_msgids.h" + + +/************************************************************************* +** +** Macro definitions +** +**************************************************************************/ + +/* +** (none) +*/ + +/************************************************************************* +** +** Type definitions +** +**************************************************************************/ + +/* +** (none) +*/ + +/************************************************************************* +** +** Exported data +** +**************************************************************************/ + +/* +** Message Table entry map... +** +** Entry 0 -- reserved (DO NOT USE) +** +** Several Entries in this default table provide example messages for a default +** system. These messages can be uncommented, and the CFE_MAKE_BIG16(SCH_UNUSED_MID) entry just +** below them can be deleted to enable them. +*/ + +/* +** Default command definition table data +*/ +SCH_MessageEntry_t SCH_DefaultMessageTable[SCH_MAX_MESSAGES] = +{ + /* + ** DO NOT USE -- entry #0 reserved for "unused" command ID - DO NOT USE + */ + /* command ID #0 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + + /* + ** cFE housekeeping request messages + */ + /* command ID #1 - Executive Services HK Request */ + { { CFE_MAKE_BIG16(CFE_ES_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + /* command ID #2 - Event Services HK Request */ + { { CFE_MAKE_BIG16(CFE_EVS_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + /* command ID #3 - Software Bus HK Request */ + { { CFE_MAKE_BIG16(CFE_SB_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + /* command ID #4 - Time Services HK Request */ + { { CFE_MAKE_BIG16(CFE_TIME_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + /* command ID #5 - Table Services HK Request */ + { { CFE_MAKE_BIG16(CFE_TBL_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + + /* + ** CFS housekeeping request messages + */ + /* command ID #6 - Checksum HK Request */ +/*{ { CFE_MAKE_BIG16(CS_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #7 - Data Store HK Request */ +{ { CFE_MAKE_BIG16(DS_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + /* command ID #8 - File Manager HK Request */ +/*{ { CFE_MAKE_BIG16(FM_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #9 - Housekeeping HK Request */ +/*{ { CFE_MAKE_BIG16(HK_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + + /* command ID #10 - Health & Safety HK Request */ +/*{ { CFE_MAKE_BIG16(HS_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #11 - Limit Checker HK Request */ +{ { CFE_MAKE_BIG16(LC_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + /* command ID #12 - Memory Dwell HK Request */ +/*{ { CFE_MAKE_BIG16(MD_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #13 - Memory Manager HK Request */ +/*{ { CFE_MAKE_BIG16(MM_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #14 - Stored Command HK Request */ +{ { CFE_MAKE_BIG16(SC_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + /* command ID #15 - Scheduler HK Request */ + { { CFE_MAKE_BIG16(SCH_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + + /* + ** CFS routine messages + */ + /* command ID #16 - HK Send Combined Housekeeping Msg #1 */ +/*{ { CFE_MAKE_BIG16(HK_SEND_COMBINED_PKT_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0003), 0x0000, HK_COMBINED_PKT1_MID } }, */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #17 - HK Send Combined Housekeeping Msg #2 */ +/*{ { CFE_MAKE_BIG16(HK_SEND_COMBINED_PKT_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0003), 0x0000, HK_COMBINED_PKT2_MID } }, */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #18 - HK Send Combined Housekeeping Msg #3 */ +/*{ { CFE_MAKE_BIG16(HK_SEND_COMBINED_PKT_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0003), 0x0000, HK_COMBINED_PKT3_MID } }, */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #19 - HK Send Combined Housekeeping Msg #4 */ +/*{ { CFE_MAKE_BIG16(HK_SEND_COMBINED_PKT_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0003), 0x0000, HK_COMBINED_PKT4_MID } }, */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #20 - CS Background Cycle */ +/*{ { CFE_MAKE_BIG16(CS_BACKGROUND_CYCLE_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #21 - SC 1 Hz Wakeup */ +{ { CFE_MAKE_BIG16(SC_1HZ_WAKEUP_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + /* command ID #22 - LC Sample Action Points */ +{ { CFE_MAKE_BIG16(LC_SAMPLE_AP_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0009), 0x0000, 0x0005, (LC_MAX_ACTIONPOINTS - 1), 0x0000 } }, + /* command ID #23 - DS 1 HZ Wakeup */ +/*{ { CFE_MAKE_BIG16(DS_1HZ_WAKEUP_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #24 - MD Wakeup */ +/*{ { CFE_MAKE_BIG16(MD_WAKEUP_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #25 - CF HK */ +{ { CFE_MAKE_BIG16(CF_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + /* command ID #26 - CF Wakeup */ +{ { CFE_MAKE_BIG16(CF_WAKE_UP_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + /* command ID #27 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #28 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #29 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + + /* + ** Mission Defined Messages + */ + /* command ID #30 - Command Ingest HK Request Example */ +/*{ { CFE_MAKE_BIG16(CI_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #31 - Telemetry Output HK Request Example */ +/*{ { CFE_MAKE_BIG16(TO_SEND_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #32 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #33 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #34 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #35 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #36 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #37 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #38 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #39 - ES NOOP */ + { { CFE_MAKE_BIG16(CFE_ES_CMD_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, + + /* command ID #40 - Demo Request HK */ + { { CFE_MAKE_BIG16(DEMO_REQ_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, /* Demo HK Request */ + /* command ID #41 - EPS Request HK */ + { { CFE_MAKE_BIG16(EPS_REQ_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, /* EPS HK Request */ + /* command ID #42 - Radio Request HK */ + { { CFE_MAKE_BIG16(RADIO_REQ_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, /* Radio HK Request */ + /* command ID #43 - Radio Receive Data */ + { { CFE_MAKE_BIG16(RADIO_CMD_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0005 } }, /* Radio Receive Data */ + /* command ID #44 - ADCS Request HK */ + { { CFE_MAKE_BIG16(ADCS_REQ_HK_MID), CFE_MAKE_BIG16(0xC000), CFE_MAKE_BIG16(0x0001), 0x0000 } }, /* ADCS HK Request */ + /* command ID #45 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #46 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #47 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #48 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #49 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + + /* command ID #50 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #51 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #52 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #53 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #54 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #55 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #56 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #57 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #58 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #59 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + + /* command ID #60 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #61 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #62 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #63 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #64 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #65 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #66 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #67 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #68 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #69 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + + /* command ID #70 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #71 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #72 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #73 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #74 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #75 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #76 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #77 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #78 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #79 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + + /* command ID #80 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #81 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #82 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #83 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #84 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #85 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #86 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #87 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #88 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #89 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + + /* command ID #90 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #91 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #92 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #93 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #94 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #95 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #96 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #97 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #98 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #99 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + + /* command ID #100 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #101 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #102 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #103 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #104 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #105 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #106 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #107 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #108 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #109 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + + /* command ID #110 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #111 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #112 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #113 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #114 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #115 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #116 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #117 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #118 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #119 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + + /* command ID #120 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #121 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #122 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #123 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #124 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #125 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #126 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } }, + /* command ID #127 */ + { { CFE_MAKE_BIG16(SCH_UNUSED_MID) } } + +}; + +/* +** Table file header +*/ +CFE_TBL_FILEDEF(SCH_DefaultMessageTable, SCH.MSG_DEFS, SCH message definitions table, sch_def_msgtbl.tbl) + +/************************************************************************* +** +** File data +** +**************************************************************************/ + +/* +** (none) +*/ + +/************************************************************************* +** +** Local function prototypes +** +**************************************************************************/ + +/* +** (none) +*/ + +/************************/ +/* End of File Comment */ +/************************/ + diff --git a/cfg/tryspace_defs/tables/sch_def_schtbl.c b/cfg/tryspace_defs/tables/sch_def_schtbl.c new file mode 100644 index 0000000..d9cb5c1 --- /dev/null +++ b/cfg/tryspace_defs/tables/sch_def_schtbl.c @@ -0,0 +1,853 @@ +/* +** $Id: sch_def_schtbl.c 1.3 2017/06/21 15:29:50EDT mdeschu Exp $ +** +** Copyright (c) 2007-2014 United States Government as represented by the +** Administrator of the National Aeronautics and Space Administration. +** All Other Rights Reserved. +** +** This software was created at NASA's Goddard Space Flight Center. +** This software is governed by the NASA Open Source Agreement and may be +** used, distributed and modified only pursuant to the terms of that +** agreement. +** +** Purpose: Scheduler (SCH) default schedule table data +** +** Author: +** +** Notes: +** +*/ + +/************************************************************************* +** +** Include section +** +**************************************************************************/ + +#include "cfe.h" +#include "cfe_tbl_filedef.h" +#include "sch_platform_cfg.h" +#include "sch_msgdefs.h" +#include "sch_tbldefs.h" + +/************************************************************************* +** +** Macro definitions +** +**************************************************************************/ + +/* +** Schedule Table "group" definitions +*/ +#define SCH_GROUP_NONE (0) + +/* Define highest level multi-groups */ +#define SCH_GROUP_CDH (0x000001) /* All C&DH Messages */ +#define SCH_GROUP_GNC (0x000002) /* All GNC Messages */ + +/* Define sub multi-groups */ +#define SCH_GROUP_CFS_HK ( (0x000010) | SCH_GROUP_CDH) /* CFS HK Messages */ +#define SCH_GROUP_CFE_HK ( (0x000020) | SCH_GROUP_CDH) /* cFE HK Messages */ +#define SCH_GROUP_GNC_HK ( (0x000040) | SCH_GROUP_GNC) /* GNC HK Messages */ + +#define SCH_GROUP_ + +/* Define groups for messages that appear multiple times in Schedule */ +#define SCH_GROUP_MD_WAKEUP ((0x01000000) | SCH_GROUP_CDH) /* MD Wakeup (aka Group #1) */ + + +/************************************************************************* +** +** Type definitions +** +**************************************************************************/ + +/* +** (none) +*/ + +/************************************************************************* +** +** Exported data +** +**************************************************************************/ + +/* +** Default schedule table data +*/ +SCH_ScheduleEntry_t SCH_DefaultScheduleTable[SCH_TABLE_ENTRIES] = +{ + +/* +** Structure definition... +** +** uint8 EnableState -- SCH_UNUSED, SCH_ENABLED, SCH_DISABLED +** uint8 Type -- 0 or SCH_ACTIVITY_SEND_MSG +** uint16 Frequency -- how many seconds between Activity execution +** uint16 Remainder -- seconds offset to perform Activity +** uint16 MessageIndex -- Message Index into Message Definition table +** uint32 GroupData -- Group and Multi-Group membership definitions +*/ + + /* slot #0 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #1 */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 10, 2, 40, SCH_GROUP_CFE_HK }, /* Demo HK Request */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 10, 4, 41, SCH_GROUP_CFE_HK }, /* EPS HK Request */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 10, 6, 42, SCH_GROUP_CFE_HK }, /* Radio HK Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #2 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #3 */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 4, 3, 2, SCH_GROUP_CFE_HK }, /* EVS HK Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #4 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 4, 1, 6, SCH_GROUP_CFS_HK }, */ /* CS HK Request */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 43, SCH_GROUP_CFE_HK }, /* Radio Receive Data */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #5 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #6 */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 5, 4, 25, SCH_GROUP_CFE_HK }, /* CF HK Request */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 26, SCH_GROUP_CFE_HK }, /* CF Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #7 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #8 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #9 */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 4, 2, 7, SCH_GROUP_CFS_HK }, /* DS HK Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #10 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 44, SCH_GROUP_CFE_HK }, /* ADCS HK Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #11 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #12 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #13 */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 4, 3, 3, SCH_GROUP_CFE_HK }, /* SB HK Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #14 */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 4, 1, 8, SCH_GROUP_CFS_HK }, /* FM HK Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #15 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #16 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 20, SCH_GROUP_NONE }, */ /* CS Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #17 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #18 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #19 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 4, 2, 9, SCH_GROUP_CFS_HK }, */ /* HK HK Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #20 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #21 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #22 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #23 */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 4, 3, 4, SCH_GROUP_CFE_HK }, /* TIME HK Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #24 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 4, 1, 10, SCH_GROUP_CFS_HK }, */ /* HS HK Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #25 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #26 */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 21, SCH_GROUP_NONE }, /* SC Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #27 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #28 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #29 */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 4, 2, 11, SCH_GROUP_CFS_HK }, /* LC HK Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #30 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #31 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #32 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #33 */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 4, 3, 5, SCH_GROUP_CFE_HK }, /* TBL HK Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #34 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 4, 1, 12, SCH_GROUP_CFS_HK }, */ /* MD HK Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #35 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #36 */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 23, SCH_GROUP_NONE }, /* DS Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #37 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #38 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #39 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 4, 2, 13, SCH_GROUP_CFS_HK }, */ /* MM HK Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #40 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #41 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #42 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #43 */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 4, 3, 1, SCH_GROUP_CFE_HK }, /* ES HK Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #44 */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 4, 1, 14, SCH_GROUP_CFS_HK }, /* SC HK Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #45 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #46 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #47 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #48 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #49 */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 4, 2, 15, SCH_GROUP_CFS_HK }, /* SCH HK Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #50 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #51 */ + { SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 22, SCH_GROUP_NONE }, /* LC Sample Action Points */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #52 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #53 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #54 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #55 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #56 */ +/*{ SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 4, 1, 30, SCH_GROUP_NONE }, */ /* CI HK Request */ +/*{ SCH_ENABLED, SCH_ACTIVITY_SEND_MSG, 4, 2, 31, SCH_GROUP_NONE }, */ /* TO HK Request */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #57 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #58 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #59 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #60 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #61 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #62 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #63 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #64 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #65 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #66 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #67 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #68 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #69 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #70 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #71 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #72 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #73 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #74 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #75 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #76 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #77 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #78 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #79 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #80 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #81 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #82 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #83 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #84 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #85 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #86 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #87 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #88 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #89 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #90 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #91 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 4, 0, 16, SCH_GROUP_CFS_HK }, */ /* HK Send Combined HK '1' */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 4, 1, 17, SCH_GROUP_CFS_HK }, */ /* HK Send Combined HK '2' */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #92 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 4, 2, 18, SCH_GROUP_CFS_HK }, */ /* HK Send Combined HK '3' */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 4, 3, 19, SCH_GROUP_CFS_HK }, */ /* HK Send Combined HK '4' */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #93 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #94 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #95 */ +/*{ SCH_DISABLED, SCH_ACTIVITY_SEND_MSG, 1, 0, 24, SCH_GROUP_MD_WAKEUP }, */ /* MD Wakeup */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #96 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #97 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #98 */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + + /* slot #99 - Left Empty to allow Scheduler to Easily Resynchronize with 1 Hz */ + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE}, + { SCH_UNUSED, 0, 0, 0, 0, SCH_GROUP_NONE} +}; + +/* +** Table file header +*/ +CFE_TBL_FILEDEF(SCH_DefaultScheduleTable, SCH.SCHED_DEF, SCH schedule table, sch_def_schtbl.tbl) + +/************************************************************************* +** +** File data +** +**************************************************************************/ + +/* +** (none) +*/ + +/************************************************************************* +** +** Local function prototypes +** +**************************************************************************/ + +/* +** (none) +*/ + +/************************/ +/* End of File Comment */ +/************************/ + diff --git a/cfg/tryspace_defs/tables/to_lab_sub.c b/cfg/tryspace_defs/tables/to_lab_sub.c new file mode 100644 index 0000000..7a6c48b --- /dev/null +++ b/cfg/tryspace_defs/tables/to_lab_sub.c @@ -0,0 +1,83 @@ +/************************************************************************ + * NASA Docket No. GSC-18,719-1, and identified as “core Flight System: Bootes” + * + * Copyright (c) 2020 United States Government as represented by the + * Administrator of the National Aeronautics and Space Administration. + * All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. You may obtain + * a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ************************************************************************/ + +/** + * \file + * Define TO Lab CPU specific subscription table + */ + +#include "cfe_tbl_filedef.h" /* Required to obtain the CFE_TBL_FILEDEF macro definition */ +#include "cfe_sb_api_typedefs.h" +#include "to_lab_tbl.h" +#include "cfe_msgids.h" + +/* cFS */ +#include "ci_lab_msgids.h" +#include "cf_msgids.h" +#include "ds_msgids.h" +#include "fm_msgids.h" +#include "lc_msgids.h" +#include "sc_msgids.h" +#include "sch_msgids.h" +#include "to_lab_msgids.h" + +/* Components */ +#include "adcs_msgids.h" +#include "demo_msgids.h" +#include "eps_msgids.h" +#include "radio_msgids.h" + +TO_LAB_Subs_t TO_LAB_Subs = {.Subs = { + /* cFE Core */ + {CFE_SB_MSGID_WRAP_VALUE(CFE_ES_HK_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_EVS_HK_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_SB_HK_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_TBL_HK_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_TIME_HK_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_TIME_DIAG_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_SB_STATS_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_TBL_REG_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_EVS_LONG_EVENT_MSG_MID), {0, 0}, 32}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_EVS_SHORT_EVENT_MSG_MID), {0, 0}, 32}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_ES_APP_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(CFE_ES_MEMSTATS_TLM_MID), {0, 0}, 4}, + + /* cFS */ + {CFE_SB_MSGID_WRAP_VALUE(CF_HK_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(DS_HK_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(FM_HK_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(FM_FILE_INFO_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(FM_DIR_LIST_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(FM_OPEN_FILES_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(FM_FREE_SPACE_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(LC_HK_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(SC_HK_TLM_MID), {0,0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(SCH_HK_TLM_MID), {0,0}, 4}, + + /* Components */ + {CFE_SB_MSGID_WRAP_VALUE(ADCS_HK_TLM_MID), {0, 0}, 32}, + {CFE_SB_MSGID_WRAP_VALUE(DEMO_HK_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(DEMO_DEVICE_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(EPS_HK_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(EPS_DEVICE_TLM_MID), {0, 0}, 4}, + {CFE_SB_MSGID_WRAP_VALUE(RADIO_HK_TLM_MID), {0, 0}, 4}, + + /* CFE_SB_MSGID_RESERVED entry to mark the end of valid MsgIds */ + {CFE_SB_MSGID_RESERVED, {0, 0}, 0}}}; + +CFE_TBL_FILEDEF(TO_LAB_Subs, TO_LAB_APP.TO_LAB_Subs, TO Lab Sub Tbl, to_lab_sub.tbl) diff --git a/cfg/tryspace_defs/targets.cmake b/cfg/tryspace_defs/targets.cmake new file mode 100644 index 0000000..47c51c5 --- /dev/null +++ b/cfg/tryspace_defs/targets.cmake @@ -0,0 +1,78 @@ +###################################################################### +# +# Master config file for cFS target boards +# +###################################################################### + +# The MISSION_NAME will be compiled into the target build data structure +# as well as being passed to "git describe" to filter the tags when building +# the version string. +SET(MISSION_NAME "TrySpace") + +# MDG dedication. September 16, 2023 changed us all. RIP. +SET(SPACECRAFT_ID 0x17) + +# The "MISSION_GLOBAL_APPLIST" is a set of apps/libs that will be built +# for every defined target. These are built as dynamic modules +# and must be loaded explicitly via startup script or command. +# This list is effectively appended to every TGTx_APPLIST in targets.cmake. +# Example: +list(APPEND MISSION_GLOBAL_APPLIST + # + # Libraries + # + cryptolib + hwlib + io_lib + + # + # cFS Apps + # + cf + ci_lab + ds + fm + lc + sc + sch + to_lab + + # + # Components + # + adcs + demo + eps + radio +) + +# Create Application Platform Include List +FOREACH(X ${MISSION_GLOBAL_APPLIST}) + LIST(APPEND APPLICATION_PLATFORM_INC_LIST ${${X}_MISSION_DIR}/config) + LIST(APPEND APPLICATION_PLATFORM_INC_LIST ${${X}_MISSION_DIR}/fsw/inc) + LIST(APPEND APPLICATION_PLATFORM_INC_LIST ${${X}_MISSION_DIR}/fsw/platform_inc) + LIST(APPEND APPLICATION_PLATFORM_INC_LIST ${${X}_MISSION_DIR}/fsw/public_inc) + LIST(APPEND APPLICATION_PLATFORM_INC_LIST ${${X}_MISSION_DIR}/inc) + LIST(APPEND APPLICATION_PLATFORM_INC_LIST ${${X}_MISSION_DIR}/include) + LIST(APPEND APPLICATION_PLATFORM_INC_LIST ${${X}_MISSION_DIR}/mission_inc) + LIST(APPEND APPLICATION_PLATFORM_INC_LIST ${${X}_MISSION_DIR}/platform_inc) + LIST(APPEND APPLICATION_PLATFORM_INC_LIST ${${X}_MISSION_DIR}/public_inc) + LIST(APPEND APPLICATION_PLATFORM_INC_LIST ${${X}_MISSION_DIR}/shared) + LIST(APPEND APPLICATION_PLATFORM_INC_LIST ${${X}_MISSION_DIR}/src) +ENDFOREACH(X) + +# FT_INSTALL_SUBDIR indicates where the black box test data files (lua scripts) should +# be copied during the install process. +SET(FT_INSTALL_SUBDIR "host/functional-test") + +# Each target board can have its own HW arch selection and set of included apps +SET(MISSION_CPUNAMES cpu1) + +SET(cpu1_PROCESSORID 1) +SET(cpu1_APPLIST) # Note: Using all ${MISSION_GLOBAL_APPLIST} automatically +SET(cpu1_FILELIST cfe_es_startup.scr) +if (ENABLE_UNIT_TESTS) + SET(cpu1_SYSTEM amd64-linux) +else() + SET(cpu1_SYSTEM amd64-tryspace) +endif() diff --git a/cfg/tryspace_defs/toolchain-amd64-linux.cmake b/cfg/tryspace_defs/toolchain-amd64-linux.cmake new file mode 100644 index 0000000..8e86ce4 --- /dev/null +++ b/cfg/tryspace_defs/toolchain-amd64-linux.cmake @@ -0,0 +1,23 @@ +# This example toolchain file describes the cross compiler to use for +# the target architecture indicated in the configuration file. + +# Basic cross system configuration +SET(CMAKE_SYSTEM_NAME Linux) +SET(CMAKE_SYSTEM_VERSION 1) +SET(CMAKE_SYSTEM_PROCESSOR amd64) + +# Specify the cross compiler executables +# Typically these would be installed in a home directory or somewhere +# in /opt. However in this example the system compiler is used. +SET(CMAKE_C_COMPILER "/usr/bin/gcc") +SET(CMAKE_CXX_COMPILER "/usr/bin/g++") + +# Configure the find commands +SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) +SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER) + +# These variable settings are specific to cFE/OSAL and determines which +# abstraction layers are built when using this toolchain +SET(CFE_SYSTEM_PSPNAME "pc-linux") +SET(OSAL_SYSTEM_OSTYPE "posix") diff --git a/cfg/tryspace_defs/toolchain-amd64-tryspace.cmake b/cfg/tryspace_defs/toolchain-amd64-tryspace.cmake new file mode 100644 index 0000000..edaa513 --- /dev/null +++ b/cfg/tryspace_defs/toolchain-amd64-tryspace.cmake @@ -0,0 +1,24 @@ +# This example toolchain file describes the cross compiler to use for +# the target architecture indicated in the configuration file. + +# Basic cross system configuration +SET(CMAKE_SYSTEM_NAME Linux) +SET(CMAKE_SYSTEM_VERSION 1) +SET(CMAKE_SYSTEM_PROCESSOR amd64) + +# Specify the cross compiler executables +# Typically these would be installed in a home directory or somewhere +# in /opt. However in this example the system compiler is used. +SET(CMAKE_C_COMPILER "/usr/bin/gcc") +SET(CMAKE_CXX_COMPILER "/usr/bin/g++") + +# Configure the find commands +SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) +SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER) + +# These variable settings are specific to cFE/OSAL and determines which +# abstraction layers are built when using this toolchain +SET(CFE_SYSTEM_PSPNAME "tryspace") +SET(OSAL_SYSTEM_BSPTYPE "tryspace-linux") +SET(OSAL_SYSTEM_OSTYPE "tryspace") diff --git a/comp/adcs b/comp/adcs index c0884d6..05544f2 160000 --- a/comp/adcs +++ b/comp/adcs @@ -1 +1 @@ -Subproject commit c0884d6410ff767aacf0e65e841e34ddd2303bc1 +Subproject commit 05544f285c492e7653d46c1a8067fbe765ee9eb4 diff --git a/comp/cryptolib b/comp/cryptolib index 12fdbd6..61be4f1 160000 --- a/comp/cryptolib +++ b/comp/cryptolib @@ -1 +1 @@ -Subproject commit 12fdbd6db45bedfe65789132834249bf6b64b3da +Subproject commit 61be4f164371d52e603705a08878e8190318787d diff --git a/comp/demo b/comp/demo index 153ccc0..0b403da 160000 --- a/comp/demo +++ b/comp/demo @@ -1 +1 @@ -Subproject commit 153ccc0e5fa97b792a097017670e42beaf345af8 +Subproject commit 0b403daf980305c32ffcd72042bd5c510e9c86ca diff --git a/comp/eps b/comp/eps index 966c76a..303836f 160000 --- a/comp/eps +++ b/comp/eps @@ -1 +1 @@ -Subproject commit 966c76a6533094bc90a4025b550f10f0c2ba324b +Subproject commit 303836fe2cd732444f44ca6d600ddeebf74b986c diff --git a/comp/radio b/comp/radio index 5b5443a..be66730 160000 --- a/comp/radio +++ b/comp/radio @@ -1 +1 @@ -Subproject commit 5b5443a1c5e127b5156f1ec3c9f4a06b743e8370 +Subproject commit be6673061809337346a95bb65e1eadcf4802ac8d diff --git a/fsw b/fsw index a026b5a..ad4dfef 160000 --- a/fsw +++ b/fsw @@ -1 +1 @@ -Subproject commit a026b5a3d6366f59015f3e9f01f3a4383328ae1d +Subproject commit ad4dfefc2f917951b2115d6c3a064e12bbc69c74 diff --git a/gsw b/gsw index 53a20bb..dfc6355 160000 --- a/gsw +++ b/gsw @@ -1 +1 @@ -Subproject commit 53a20bb334c4dadd3419252652c6009b081172ed +Subproject commit dfc6355e817724b70736c85c96da7d043b9e540d diff --git a/simulith b/simulith index 9d051a6..8e9e45f 160000 --- a/simulith +++ b/simulith @@ -1 +1 @@ -Subproject commit 9d051a6398562298fc0ef565d4f965837d15c1e6 +Subproject commit 8e9e45fdbb3ba1c10161cb28de8ff09484e04765 From 21ffbff7b00b7250ef3b1cbd8c429822410a8c23 Mon Sep 17 00:00:00 2001 From: "John P. Lucas" Date: Thu, 25 Sep 2025 09:59:14 -0400 Subject: [PATCH 12/12] [#71] Updates to submodules after merges; (#72) --- .github/workflows/ci.yml | 8 ++++---- Makefile | 6 +++--- atlas | 2 +- cfg/Dockerfile.base | 2 +- cfg/lab-compose.j2 | 2 +- comp/adcs | 2 +- comp/cryptolib | 2 +- comp/demo | 2 +- comp/eps | 2 +- comp/radio | 2 +- fsw | 2 +- gsw | 2 +- simulith | 2 +- 13 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2c217ce..d6b2d1f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ jobs: build-simulith: runs-on: ubuntu-latest container: - image: tryspaceorg/tryspace-lab:0.0.1 + image: tryspaceorg/tryspace-lab:1.0.0 steps: - name: Checkout repository uses: actions/checkout@v4 @@ -36,7 +36,7 @@ jobs: build-fsw: runs-on: ubuntu-latest container: - image: tryspaceorg/tryspace-lab:0.0.1 + image: tryspaceorg/tryspace-lab:1.0.0 steps: - name: Checkout repository uses: actions/checkout@v4 @@ -55,7 +55,7 @@ jobs: build-test: runs-on: ubuntu-latest container: - image: tryspaceorg/tryspace-lab:0.0.1 + image: tryspaceorg/tryspace-lab:1.0.0 steps: - name: Checkout repository uses: actions/checkout@v4 @@ -79,7 +79,7 @@ jobs: build-cli: runs-on: ubuntu-latest container: - image: tryspaceorg/tryspace-lab:0.0.1 + image: tryspaceorg/tryspace-lab:1.0.0 steps: - name: Checkout repository uses: actions/checkout@v4 diff --git a/Makefile b/Makefile index c69d42d..e4f4a0e 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ .PHONY: build clean clean-cache clean-cli clean-fsw clean-gsw clean-sim cfg cli cli-start container debug fsw gsw help mold sim start stop uninstall # Build image name -export BUILD_IMAGE ?= tryspaceorg/tryspace-lab:0.0.1 +export BUILD_IMAGE ?= tryspaceorg/tryspace-lab:1.0.0 # Common paths CFG_DIR := $(CURDIR)/cfg @@ -149,8 +149,8 @@ stop: uninstall: clean clean-cache rm -f $(CFG_DIR)/active.yaml $(CFG_DIR)/build.yaml docker ps -a --filter "name=tryspace-" -q | xargs -r docker rm -f - docker images "tryspace-*" -q | xargs -r docker rmi - docker volume ls -q --filter "name=gsw-data" | xargs -r docker volume rm + docker images "tryspace-*" -q | xargs -r docker rmi -f + docker volume ls -q --filter "name=gsw-data" | xargs -r docker volume rm -f docker volume ls -q --filter "name=simulith_ipc" | xargs -r docker volume rm docker network ls -q --filter "name=tryspace-net" | xargs -r docker network rm docker network ls -q --filter "name=cfg_tryspace-net" | xargs -r docker network rm diff --git a/atlas b/atlas index d87c003..fcdb419 160000 --- a/atlas +++ b/atlas @@ -1 +1 @@ -Subproject commit d87c0032ba101142c3af55a18204cc0e325a3df5 +Subproject commit fcdb4199a51714bd7231ee860a6194c161ef4a11 diff --git a/cfg/Dockerfile.base b/cfg/Dockerfile.base index b59fd6e..dd5e24d 100644 --- a/cfg/Dockerfile.base +++ b/cfg/Dockerfile.base @@ -3,7 +3,7 @@ # # Assumes build using `make container` from top level of tryspace-lab repository # -# docker push tryspaceorg/tryspace-lab:0.0.1 +# docker push tryspaceorg/tryspace-lab:1.0.0 # FROM debian:bookworm-slim@sha256:6ac2c08566499cc2415926653cf2ed7c3aedac445675a013cc09469c9e118fdd diff --git a/cfg/lab-compose.j2 b/cfg/lab-compose.j2 index 239c778..4b593fb 100644 --- a/cfg/lab-compose.j2 +++ b/cfg/lab-compose.j2 @@ -47,6 +47,7 @@ services: stdin_open: true tty: true depends_on: + - tryspace-cryptolib - tryspace-gsw - tryspace-server environment: @@ -66,7 +67,6 @@ services: stdin_open: true tty: true depends_on: - - tryspace-director - tryspace-gsw cpus: "1.0" mem_limit: 512m diff --git a/comp/adcs b/comp/adcs index 05544f2..c349689 160000 --- a/comp/adcs +++ b/comp/adcs @@ -1 +1 @@ -Subproject commit 05544f285c492e7653d46c1a8067fbe765ee9eb4 +Subproject commit c3496891af242c7e5bc92720d7ba90d0f92b7b62 diff --git a/comp/cryptolib b/comp/cryptolib index 61be4f1..6dd57bb 160000 --- a/comp/cryptolib +++ b/comp/cryptolib @@ -1 +1 @@ -Subproject commit 61be4f164371d52e603705a08878e8190318787d +Subproject commit 6dd57bb824d061d062d6f4052da8cff126893617 diff --git a/comp/demo b/comp/demo index 0b403da..48ca439 160000 --- a/comp/demo +++ b/comp/demo @@ -1 +1 @@ -Subproject commit 0b403daf980305c32ffcd72042bd5c510e9c86ca +Subproject commit 48ca4399e4b348002189234ca6b10b237e2a2848 diff --git a/comp/eps b/comp/eps index 303836f..f6d464c 160000 --- a/comp/eps +++ b/comp/eps @@ -1 +1 @@ -Subproject commit 303836fe2cd732444f44ca6d600ddeebf74b986c +Subproject commit f6d464c78d62992e72aa3cbc81b660a474a127c8 diff --git a/comp/radio b/comp/radio index be66730..bfcdfdc 160000 --- a/comp/radio +++ b/comp/radio @@ -1 +1 @@ -Subproject commit be6673061809337346a95bb65e1eadcf4802ac8d +Subproject commit bfcdfdc0a08007267608781f62adfa066a51cfbb diff --git a/fsw b/fsw index ad4dfef..dfa6ab2 160000 --- a/fsw +++ b/fsw @@ -1 +1 @@ -Subproject commit ad4dfefc2f917951b2115d6c3a064e12bbc69c74 +Subproject commit dfa6ab2101a69078b812b6e7be301a04b9010ed4 diff --git a/gsw b/gsw index dfc6355..4930043 160000 --- a/gsw +++ b/gsw @@ -1 +1 @@ -Subproject commit dfc6355e817724b70736c85c96da7d043b9e540d +Subproject commit 4930043ce33d6f0c83f1311e4b8ceea0b50d226d diff --git a/simulith b/simulith index 8e9e45f..d170908 160000 --- a/simulith +++ b/simulith @@ -1 +1 @@ -Subproject commit 8e9e45fdbb3ba1c10161cb28de8ff09484e04765 +Subproject commit d170908081d13a9aa9b62835eb6da565cd387d61