diff --git a/README.md b/README.md index 11c4f00..1f35e44 100644 --- a/README.md +++ b/README.md @@ -53,3 +53,8 @@ cts1_ground_support -r ../CTS-SAT-1-OBC-Firmware 3. Optional: Run `cts1_ground_support --debug` to start the ground support terminal in debug mode. The ground support terminal will automatically reload when you make changes to the code. It is written using the Dash framework in Python. + +## Telecommand Documentation +This repository incorpoarates a feature to generate a spraedsheet of telecommands. To use this feature: +1. cd into the \cts1_ground_support folder +2. run `python spreadsheet_generator.py` in the terminal \ No newline at end of file diff --git a/cts1_ground_support/spreadsheet_generator.py b/cts1_ground_support/spreadsheet_generator.py new file mode 100644 index 0000000..c20e587 --- /dev/null +++ b/cts1_ground_support/spreadsheet_generator.py @@ -0,0 +1,289 @@ +import csv +import re +from dataclasses import dataclass +from datetime import datetime +from pathlib import Path +from typing import List + +import git + + +@dataclass(kw_only=True) +class TelecommandDefinition: + """Stores a telecommand definition. from the `telecommand_definitions.c` file.""" + + name: str + tcmd_func: str + description: str | None = None + number_of_args: int + readiness_level: str + full_docstring: str | None = None + argument_descriptions: list[str] | None = None + + def to_dict(self: "TelecommandDefinition") -> dict[str, str | int | list[str] | None]: + """Convert the telecommand definition to a dictionary.""" + return { + "name": self.name, + "tcmd_func": self.tcmd_func, + "description": self.description, + "number_of_args": self.number_of_args, + "readiness_level": self.readiness_level, + "full_docstring": self.full_docstring, + "argument_descriptions": self.argument_descriptions, + } + + def to_dict_table_fields(self: "TelecommandDefinition") -> dict[str, str | int]: + """Convert the telecommand definition to a dictionary, with only the fields from the array.""" + return { + "Command": self.name, + "Function Name": self.tcmd_func, + "Number of Args": self.number_of_args, + "Readiness Level": self.readiness_level, + } + + def has_required_fields(self: "TelecommandDefinition") -> bool: + """Check if the telecommand definition has all the required fields.""" + return all( + [ + self.name is not None, + self.tcmd_func is not None, + self.number_of_args is not None, + self.readiness_level is not None, + ] + ) + + +def read_text_file(file_path: Path | str) -> str: + """Read text file as UTF-8 in a cross-platform way.""" + # Note: following encoding arg is very important. + return Path(file_path).read_text(encoding="utf-8") + + +def remove_c_comments(text: str) -> str: + """Remove C-style comments from a string.""" + text = re.sub(r"\s*/\*.*?\*/\s*", "\n", text, flags=re.DOTALL) # DOTALL makes . match newlines + return re.sub(r"\s*//.*", "", text) + + +def parse_telecommand_array_table(c_code: str | Path) -> list[TelecommandDefinition]: + """Parse the list of telecommands from the `telecommand_definitions.c` file.""" + if isinstance(c_code, Path): + c_code = read_text_file(c_code) + + c_code = remove_c_comments(c_code) + + top_level_regex = re.compile( + r"TCMD_TelecommandDefinition_t\s+\w+\s*\[\s*\]\s*=\s*{" + r"(?P(\s*{\s*[^{}]+\s*},?)+)" + r"\s*};", + ) + + struct_body_regex = re.compile(r"{\s*(?P[^{}]+)\s*}") + struct_level_regex = re.compile(r"\s*\.(?P\w+)\s*=\s*(?P[^,]+),?") + + telecommands: list[TelecommandDefinition] = [] + + top_level_matches = list(top_level_regex.finditer(c_code)) + if len(top_level_matches) != 1: + raise ValueError( + f"Expected to find exactly 1 telecommand array in the input code, but found " + f"{len(top_level_matches)} matches." + ) + + top_level_match = top_level_matches[0] + all_struct_declarations = top_level_match.group("all_struct_declarations") + + for struct_declaration in re.finditer(struct_body_regex, all_struct_declarations): + struct_body = struct_declaration.group("struct_body") + + fields: dict[str, str] = {} + for struct_match in struct_level_regex.finditer(struct_body): + field_name = struct_match.group("field_name") + field_value = struct_match.group("field_value").strip().strip('"') + + fields[field_name] = field_value + + telecommands.append( + TelecommandDefinition( + name=fields["tcmd_name"], + tcmd_func=fields["tcmd_func"], + number_of_args=int(fields["number_of_args"]), + readiness_level=fields["readiness_level"], + ), + ) + + return telecommands + + +def extract_c_function_docstring(function_name: str, c_code: str) -> str | None: + """Extract the docstring for a specified function from the C code.""" + pattern = re.compile( + rf"(?P(///(.*)\s*)+)\s*(?P\w+)\s+{function_name}\s*\(" + ) + match = pattern.search(c_code) + if match: + docstring = match.group("docstring") + docstring_lines = [ + line.strip().lstrip("/").strip() for line in docstring.strip().split("\n") + ] + return "\n".join(docstring_lines) + return None + + +def extract_telecommand_arg_list(docstring: str) -> list[str] | None: + """Extract the list of argument descriptions from a telecommand docstring.""" + arg_pattern = re.compile( + r"@param args_str.*\n(?P([\s/]*- Arg (?P\d+): (?P.+)\s*)*)" + ) + + matches = [] + match = arg_pattern.search(docstring) + if not match: + return None + + args_text = match.group("args") + arg_desc_pattern = re.compile(r"- Arg (?P\d+): (?P.+)\s*") + + matches.extend( + [arg_match.group("arg_description") for arg_match in arg_desc_pattern.finditer(args_text)] + ) + + return matches + + +def parse_telecommand_list_from_repo(repo_path: Path) -> list[TelecommandDefinition]: + """Parse telecommands from the repository and extract additional information.""" + if not isinstance(repo_path, Path): + raise TypeError(f"Expected a Path object, but got {type(repo_path)}") + if not repo_path.is_dir(): + raise ValueError(f"Expected a directory, but got {repo_path}") + + telecommands_defs_path = repo_path / "firmware/Core/Src/telecommands/telecommand_definitions.c" + + if not telecommands_defs_path.is_file(): + raise ValueError( + "The telecommand definitions file does not exist in the expected location." + ) + + tcmd_list = parse_telecommand_array_table(telecommands_defs_path) + + c_files_concat: str = "\n".join( + read_text_file(f) for f in repo_path.glob("firmware/Core/Src/**/*tele*.c") + ) + + for tcmd_idx in range(len(tcmd_list)): + docstring = extract_c_function_docstring( + tcmd_list[tcmd_idx].tcmd_func, + c_files_concat, + ) + if docstring is not None: + tcmd_list[tcmd_idx].full_docstring = docstring + tcmd_list[tcmd_idx].argument_descriptions = extract_telecommand_arg_list(docstring) + + return tcmd_list + + +def save_telecommands_to_spreadsheet(telecommands: List[TelecommandDefinition], save_dir: Path): + """Save telecommands to a spreadsheet with a date-and-time-based filename. + + Args: + telecommands (list[TelecommandDefinition]): List of telecommand definitions. + save_dir (Path): Directory to save the spreadsheet. + """ + # Ensure the save directory exists + save_dir.mkdir(parents=True, exist_ok=True) + + # Define the filename based on the current date and time + file_name = f"telecommands_{datetime.now().strftime('%Y-%m-%d_%H-%M')}.csv" + file_path = save_dir / file_name + + try: + # Open the file for writing + with open(file_path, mode="w", newline="") as file: + writer = csv.writer(file) + # Write the header row, adding "Docstring" to the columns + writer.writerow( + ["Name", "Function", "Number of Args", "Readiness Level", "Arguments", "Docstring"] + ) + + # Write each telecommand's details + for tcmd in telecommands: + writer.writerow( + [ + tcmd.name, + tcmd.tcmd_func, + tcmd.number_of_args, + tcmd.readiness_level, + ", ".join(tcmd.argument_descriptions or []), + tcmd.full_docstring + or "", # Include the docstring, or an empty string if none + ] + ) + + # Notify the user of successful save + print(f"Telecommands saved to {file_path}") + + except IOError as e: + raise IOError(f"Failed to write telecommands to {file_path}: {e}") + + +def clone_firmware_repo(base_path: Path) -> tuple[Path, git.Repo]: + """ + Clone the CTS-SAT-1-OBC-Firmware repository into the shared parent directory. + + Args: + base_path (Path): Path to the parent directory containing both repositories. + + Returns: + tuple[Path, git.Repo]: Path to the cloned firmware repo and the git.Repo object. + """ + firmware_repo_path = base_path / "CTS-SAT-1-OBC-Firmware" + + if not firmware_repo_path.exists(): + print(f"Cloning CTS-SAT-1-OBC-Firmware into {firmware_repo_path}") + repo = git.Repo.clone_from( + "https://github.com/CalgaryToSpace/CTS-SAT-1-OBC-Firmware.git", + to_path=firmware_repo_path, + branch="main", + depth=1, # Only clone the latest version of the main branch. + ) + else: + print(f"CTS-SAT-1-OBC-Firmware already exists at {firmware_repo_path}") + repo = git.Repo(firmware_repo_path) + + return firmware_repo_path, repo + + +def prepare_paths() -> tuple[Path, Path]: + """ + Prepare and return paths for the firmware and ground support repositories. + + Returns: + tuple[Path, Path]: Paths for the firmware repository and ground support repository. + """ + # Dynamically determine the base path as the parent of the CTS-SAT-1-Ground-Support directory + script_path = Path(__file__).resolve() + ground_support_repo_path = script_path.parents[1] + base_path = ground_support_repo_path.parent + + # Validate the ground support repo path + if not ground_support_repo_path.is_dir(): + raise FileNotFoundError(f"Ground support repo not found at {ground_support_repo_path}") + + # Clone firmware repository at the base path + firmware_repo_path, _ = clone_firmware_repo(base_path) + + return firmware_repo_path, ground_support_repo_path + + +if __name__ == "__main__": + firmware_repo_path, ground_support_repo_path = prepare_paths() + + # Parse telecommands from firmware repo + telecommands = parse_telecommand_list_from_repo(firmware_repo_path) + + # Define spreadsheets directory inside ground support repo + spreadsheets_dir = ground_support_repo_path / "spreadsheets" + + # Save telecommands to spreadsheets + save_telecommands_to_spreadsheet(telecommands, spreadsheets_dir) diff --git a/spreadsheets/telecommands_2024-12-01_21-58.csv b/spreadsheets/telecommands_2024-12-01_21-58.csv new file mode 100644 index 0000000..38877e2 --- /dev/null +++ b/spreadsheets/telecommands_2024-12-01_21-58.csv @@ -0,0 +1,694 @@ +Name,Function,Number of Args,Readiness Level,Arguments,Docstring +hello_world,TCMDEXEC_hello_world,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief A simple telecommand that responds with ""Hello, world!"" +@param args_str No arguments expected +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 if successful, >0 if an error occurred (but hello_world can't return an error)" +heartbeat_off,TCMDEXEC_heartbeat_off,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +heartbeat_on,TCMDEXEC_heartbeat_on,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +core_system_stats,TCMDEXEC_core_system_stats,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +get_system_time,TCMDEXEC_get_system_time,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +set_system_time,TCMDEXEC_set_system_time,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Unix epoch time in milliseconds (uint64_t),"@brief Set the system time to the provided Unix epoch time in milliseconds +@param args_str +- Arg 0: Unix epoch time in milliseconds (uint64_t) +@return 0 if successful, 1 if error" +correct_system_time,TCMDEXEC_correct_system_time,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"Correction time in milliseconds (int64_t). Positive = forward in time, negative = backward in time.","@brief Adjust the system time with a signed int +@param args_str +- Arg 0: Correction time in milliseconds (int64_t). Positive = forward in time, negative = backward in time. +@return 0 if successful, 1 if error" +set_eps_time_based_on_obc_time,TCMDEXEC_set_eps_time_based_on_obc_time,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Sync's eps time to obc time (+/- 1 second) +@return 0 on success, >0 on failure." +set_obc_time_based_on_eps_time,TCMDEXEC_set_obc_time_based_on_eps_time,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Sync's obc time to eps time (+/- 1 second) +@return 0 on success, >0 on failure." +available_telecommands,TCMDEXEC_available_telecommands,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +reboot,TCMDEXEC_reboot,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +scan_i2c_bus,TCMDEXEC_scan_i2c_bus,1,TCMD_READINESS_LEVEL_FOR_OPERATION,I2C bus to scan (1-4),"@brief Scans the I2C bus for devices. Prints out the addresses of devices found. +@param args_str +- Arg 0: I2C bus to scan (1-4) +@return 0 if successful, 1 if error." +echo_back_args,TCMDEXEC_echo_back_args,1,TCMD_READINESS_LEVEL_FOR_OPERATION,The string to echo back.,"@brief A demo telecommand that echoes back the argument it received. +@param args_str +- Arg 0: The string to echo back." +echo_back_uint32_args,TCMDEXEC_echo_back_uint32_args,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"The first integer to echo back., The second integer to echo back., The third integer to echo back.","@brief A demo telecommand that echoes back each integer argument it received. +@param args_str 3 integer arguments to echo back. +- Arg 0: The first integer to echo back. +- Arg 1: The second integer to echo back. +- Arg 2: The third integer to echo back. +@return 0 if all ints are parsed successfully, otherwise the error code of the first failed parse." +run_all_unit_tests,TCMDEXEC_run_all_unit_tests,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +demo_blocking_delay,TCMDEXEC_demo_blocking_delay,1,TCMD_READINESS_LEVEL_FLIGHT_TESTING,delay_ms (uint64_t) - The number of milliseconds to delay for. <=30_000ms.,"@brief Delay for a specified number of milliseconds, for testing purposes. +@param args_str 1 argument: delay_ms (uint64_t) +- Arg 0: delay_ms (uint64_t) - The number of milliseconds to delay for. <=30_000ms. +@return 0 on success, 1 on error" +config_set_int_var,TCMDEXEC_config_set_int_var,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"variable name, new value","@brief Set an integer configuration variable +@param args_str +- Arg 0: variable name +- Arg 1: new value +@param response_output_buf Buffer to write the response to +@param response_output_buf_len Max length of the buffer +@return 0 if successful, >0 if an error occurred" +config_set_str_var,TCMDEXEC_config_set_str_var,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"variable name, new value","@brief Set a string configuration variable +@param args_str +- Arg 0: variable name +- Arg 1: new value +@return 0 if successful, >0 if an error occurred" +config_get_int_var_json,TCMDEXEC_config_get_int_var_json,1,TCMD_READINESS_LEVEL_FOR_OPERATION,variable name,"@brief Get an integer configuration variable +@param args_str +- Arg 0: variable name +@return 0 if successful, >0 if an error occurred" +config_get_str_var_json,TCMDEXEC_config_get_str_var_json,1,TCMD_READINESS_LEVEL_FOR_OPERATION,variable name,"@brief Get a string configuration variable +@param args_str +- Arg 0: variable name +@return 0 if successful, >0 if an error occurred" +config_get_all_vars_jsonl,TCMDEXEC_config_get_all_vars_jsonl,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get all configuration variables, as JSON. One variable per line. +@param args_str No arguments. +@return 0 if successful, >0 if an error occurred" +flash_activate_each_cs,TCMDEXEC_flash_activate_each_cs,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Read bytes as hex from a flash address +@param args_str No args. +@return 0 always" +flash_each_is_reachable,TCMDEXEC_flash_each_is_reachable,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Read bytes as hex from a flash address +@param args_str No args. +@return 0 always" +flash_read_hex,TCMDEXEC_flash_read_hex,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"Chip Number (CS number) as uint, Page number as uint, Number of bytes to read as uint","@brief Telecommand: Read bytes as hex from a page number +@param args_str +- Arg 0: Chip Number (CS number) as uint +- Arg 1: Page number as uint +- Arg 2: Number of bytes to read as uint +@return 0 on success, >0 on error" +flash_write_hex,TCMDEXEC_flash_write_hex,3,TCMD_READINESS_LEVEL_FLIGHT_TESTING,"Chip Number (CS number) as uint, Page number as uint, Hex string of bytes to write (any case, allows space/underscore separators)","@brief Telecommand: Write a hex string of bytes to a page number +@param args_str +- Arg 0: Chip Number (CS number) as uint +- Arg 1: Page number as uint +- Arg 2: Hex string of bytes to write (any case, allows space/underscore separators) +@return 0 on success, >0 on error" +flash_erase,TCMDEXEC_flash_erase,2,TCMD_READINESS_LEVEL_FLIGHT_TESTING,"Chip Number (CS number) as uint, Page number as uint","@brief Telecommand: Erase a block of flash memory containing the given page number. +@param args_str +- Arg 0: Chip Number (CS number) as uint +- Arg 1: Page number as uint +@return 0 on success, >0 on error" +flash_benchmark_erase_write_read,TCMDEXEC_flash_benchmark_erase_write_read,3,TCMD_READINESS_LEVEL_FLIGHT_TESTING,"Chip Number (CS number) as uint, Test Data Address as uint, Test Data Length as uint","@brief Telecommand: Benchmarks the erase/write/read operations on the flash memory module. +@param args_str +- Arg 0: Chip Number (CS number) as uint +- Arg 1: Test Data Address as uint +- Arg 2: Test Data Length as uint +@return 0 on success, >0 on error" +flash_reset,TCMDEXEC_flash_reset,1,TCMD_READINESS_LEVEL_IN_PROGRESS,Chip Number (CS number) as uint,"@brief Telecommand: Reset the flash memory module. +@param args_str +- Arg 0: Chip Number (CS number) as uint +@return 0 on success, >0 on error" +flash_read_status_register,TCMDEXEC_flash_read_status_register,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Chip Number (CS number) as uint,"@brief Telecommand: Read and print Status Register value as hex from the flash memory module. +@param args_str +- Arg 0: Chip Number (CS number) as uint +@return 0 on success, >0 on error" +flash_write_enable,TCMDEXEC_flash_write_enable,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Chip Number (CS number) as uint,"@brief Telecommand: Set the write enable lath to high on the flash memory module +@param args_str +- Arg 0: Chip Number (CS number) as uint +@return 0 on success, >0 on error" +fs_format_storage,TCMDEXEC_fs_format_storage,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +fs_mount,TCMDEXEC_fs_mount,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +fs_unmount,TCMDEXEC_fs_unmount,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +fs_write_file,TCMDEXEC_fs_write_file,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"File path as string, String to write to file","@brief Telecommand: Write data to a file in LittleFS +@param args_str +- Arg 0: File path as string +- Arg 1: String to write to file" +fs_read_file_hex,TCMDEXEC_fs_read_file_hex,1,TCMD_READINESS_LEVEL_FOR_OPERATION,File path as string,"@brief Reads a file from LittleFS, and responds with its contents as 2-digit hex bytes. +@param args_str +- Arg 0: File path as string +@return 0 on success, >0 on error" +fs_read_text_file,TCMDEXEC_fs_read_text_file,1,TCMD_READINESS_LEVEL_FOR_OPERATION,File path as string,"@brief Reads a file from LittleFS, and responds with its contents as 2-digit hex bytes. +@param args_str +- Arg 0: File path as string +@return 0 on success, >0 on error" +fs_demo_write_then_read,TCMDEXEC_fs_demo_write_then_read,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +fs_benchmark_write_read,TCMDEXEC_fs_benchmark_write_read,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Write chunk size (bytes), Write chunk count","@brief Telecommand: Benchmark LittleFS write and read operations +@param args_str +- Arg 0: Write chunk size (bytes) +- Arg 1: Write chunk count +@return 0 on success, 1 if error parsing args, 2 if benchmark failed +@note The maximum write chunk size is 127 bytes, apparently; need to investigate why so small." +adcs_ack,TCMDEXEC_adcs_ack,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_wheel_speed,TCMDEXEC_adcs_set_wheel_speed,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"wheel speed x value, wheel speed y value, wheel speed z value","@brief Telecommand: Set the wheel speed of the ADCS +@param args_str +- Arg 0: wheel speed x value +- Arg 1: wheel speed y value +- Arg 2: wheel speed z value +@return 0 on success, >0 on error" +adcs_reset,TCMDEXEC_adcs_reset,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_identification,TCMDEXEC_adcs_identification,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_program_status,TCMDEXEC_adcs_program_status,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_communication_status,TCMDEXEC_adcs_communication_status,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_deploy_magnetometer,TCMDEXEC_adcs_deploy_magnetometer,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_run_mode,TCMDEXEC_adcs_set_run_mode,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"run mode to set; can be can be off (0), enabled (1), triggered (2), or simulation (3)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: run mode to set; can be can be off (0), enabled (1), triggered (2), or simulation (3) +@return 0 on success, >0 on error" +adcs_clear_errors,TCMDEXEC_adcs_clear_errors,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_attitude_control_mode,TCMDEXEC_adcs_attitude_control_mode,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Control mode to set (Table 77 in Firmware Manual), Timeout to set control mode","@brief Telecommand: Set the attitude control mode of the ADCS; needs Power Control to be set before working +@param args_str +- Arg 0: Control mode to set (Table 77 in Firmware Manual) +- Arg 1: Timeout to set control mode +@return 0 on success, >0 on error" +adcs_attitude_estimation_mode,TCMDEXEC_adcs_attitude_estimation_mode,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_run_once,TCMDEXEC_adcs_run_once,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: If ADCS run mode is Triggered, run the ADCS sensor loop +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_magnetometer_mode,TCMDEXEC_adcs_set_magnetometer_mode,1,TCMD_READINESS_LEVEL_FOR_OPERATION,magnetometer mode to set,"@brief Telecommand: Set the magnetometer mode of the ADCS +@param args_str +- Arg 0: magnetometer mode to set +@return 0 on success, >0 on error" +adcs_set_magnetorquer_output,TCMDEXEC_adcs_set_magnetorquer_output,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"magnetorquer x duty cycle (double), magnetorquer y duty cycle (double), magnetorquer z duty cycle (double)","@brief Telecommand: Set the magnetorquer output values +@param args_str +- Arg 0: magnetorquer x duty cycle (double) +- Arg 1: magnetorquer y duty cycle (double) +- Arg 2: magnetorquer z duty cycle (double) +@return 0 on success, >0 on error" +adcs_save_config,TCMDEXEC_adcs_save_config,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_estimate_angular_rates,TCMDEXEC_adcs_estimate_angular_rates,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_llh_position,TCMDEXEC_adcs_get_llh_position,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_power_control,TCMDEXEC_adcs_get_power_control,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_power_control,TCMDEXEC_adcs_set_power_control,10,TCMD_READINESS_LEVEL_FOR_OPERATION,"Power control mode for cube control signal, Power control mode for cube control motor, Power control mode for cube sense 1, Power control mode for cube sense 2, Power control mode for cube star, Power control mode for cube wheel 1, Power control mode for cube wheel 2, Power control mode for cube wheel 3, Power control mode for motor, Power control mode for gps","@brief Telecommand: Set the power control mode of each component of the ADCS; for each, 0 turns the component off, 1 turns it on, and 2 keeps it the same as previously. +@param args_str +- Arg 0: Power control mode for cube control signal +- Arg 1: Power control mode for cube control motor +- Arg 2: Power control mode for cube sense 1 +- Arg 3: Power control mode for cube sense 2 +- Arg 4: Power control mode for cube star +- Arg 5: Power control mode for cube wheel 1 +- Arg 6: Power control mode for cube wheel 2 +- Arg 7: Power control mode for cube wheel 3 +- Arg 8: Power control mode for motor +- Arg 9: Power control mode for gps +@return 0 on success, >0 on error" +adcs_set_magnetometer_config,TCMDEXEC_adcs_set_magnetometer_config,15,TCMD_READINESS_LEVEL_FOR_OPERATION,"Mounting transform alpha angle [deg] (double), Mounting transform beta angle [deg] (double), Mounting transform gamma angle [deg] (double), Channel 1 offset value (double), Channel 2 offset value (double), Channel 3 offset value (double), Value (1, 1) of the magnetometer sensitivity matrix (double), Value (2, 2) of the magnetometer sensitivity matrix (double), Value (3, 3) of the magnetometer sensitivity matrix (double), Value (1, 2) of the magnetometer sensitivity matrix (double), Value (1, 3) of the magnetometer sensitivity matrix (double), Value (2, 1) of the magnetometer sensitivity matrix (double), Value (2, 3) of the magnetometer sensitivity matrix (double), Value (3, 1) of the magnetometer sensitivity matrix (double), Value (3, 2) of the magnetometer sensitivity matrix (double)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: Mounting transform alpha angle [deg] (double) +- Arg 1: Mounting transform beta angle [deg] (double) +- Arg 2: Mounting transform gamma angle [deg] (double) +- Arg 3: Channel 1 offset value (double) +- Arg 4: Channel 2 offset value (double) +- Arg 5: Channel 3 offset value (double) +- Arg 6: Value (1, 1) of the magnetometer sensitivity matrix (double) +- Arg 7: Value (2, 2) of the magnetometer sensitivity matrix (double) +- Arg 8: Value (3, 3) of the magnetometer sensitivity matrix (double) +- Arg 9: Value (1, 2) of the magnetometer sensitivity matrix (double) +- Arg 10: Value (1, 3) of the magnetometer sensitivity matrix (double) +- Arg 11: Value (2, 1) of the magnetometer sensitivity matrix (double) +- Arg 12: Value (2, 3) of the magnetometer sensitivity matrix (double) +- Arg 13: Value (3, 1) of the magnetometer sensitivity matrix (double) +- Arg 14: Value (3, 2) of the magnetometer sensitivity matrix (double) +@return 0 on success, >0 on error" +adcs_bootloader_clear_errors,TCMDEXEC_adcs_bootloader_clear_errors,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_unix_time_save_mode,TCMDEXEC_adcs_set_unix_time_save_mode,4,TCMD_READINESS_LEVEL_FOR_OPERATION,"whether to save the current Unix time immediately (bool passed as int; 1 = save immediately, 0 = don't save immediately), whether to save the current Unix time whenever a command is used to update it (bool passed as int; 1 = save on command, 0 = don't), whether to save the current Unix time periodically (bool passed as int; 1 = save periodically, 0 = don't), the period of saving the current Unix time","@brief Telecommand: Choose the circumstances to save the current Unix time +@param args_str +- Arg 0: whether to save the current Unix time immediately (bool passed as int; 1 = save immediately, 0 = don't save immediately) +- Arg 1: whether to save the current Unix time whenever a command is used to update it (bool passed as int; 1 = save on command, 0 = don't) +- Arg 2: whether to save the current Unix time periodically (bool passed as int; 1 = save periodically, 0 = don't) +- Arg 3: the period of saving the current Unix time +@return 0 on success, >0 on error" +adcs_get_unix_time_save_mode,TCMDEXEC_adcs_get_unix_time_save_mode,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_sgp4_orbit_params,TCMDEXEC_adcs_set_sgp4_orbit_params,8,TCMD_READINESS_LEVEL_FOR_OPERATION,"inclination (degrees) (double), eccentricity (dimensionless) (double), right ascension of the ascending node (degrees) (double), argument of perigee (degrees) (double), b-star drag term (dimensionless) (double), mean motion (orbits per day) (double), mean anomaly (degrees) (double), epoch (integer component is year, decimal component is day) (double)","@brief Telecommand: Set the ADCS Simplified General Perturbations (SGP4) orbit parameters +@param args_str +- Arg 0: inclination (degrees) (double) +- Arg 1: eccentricity (dimensionless) (double) +- Arg 2: right ascension of the ascending node (degrees) (double) +- Arg 3: argument of perigee (degrees) (double) +- Arg 4: b-star drag term (dimensionless) (double) +- Arg 5: mean motion (orbits per day) (double) +- Arg 6: mean anomaly (degrees) (double) +- Arg 7: epoch (integer component is year, decimal component is day) (double) +@return 0 on success, >0 on error" +adcs_get_sgp4_orbit_params,TCMDEXEC_adcs_get_sgp4_orbit_params,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_save_orbit_params,TCMDEXEC_adcs_save_orbit_params,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_rate_sensor_rates,TCMDEXEC_adcs_rate_sensor_rates,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_wheel_speed,TCMDEXEC_adcs_get_wheel_speed,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_magnetorquer_command,TCMDEXEC_adcs_get_magnetorquer_command,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_raw_magnetometer_values,TCMDEXEC_adcs_get_raw_magnetometer_values,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_estimate_fine_angular_rates,TCMDEXEC_adcs_estimate_fine_angular_rates,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_magnetometer_config,TCMDEXEC_adcs_get_magnetometer_config,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_commanded_attitude_angles,TCMDEXEC_adcs_get_commanded_attitude_angles,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_commanded_attitude_angles,TCMDEXEC_adcs_set_commanded_attitude_angles,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"x attitude angle (double), y attitude angle (double), z attitude angle (double)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: x attitude angle (double) +- Arg 1: y attitude angle (double) +- Arg 2: z attitude angle (double) +@return 0 on success, >0 on error" +adcs_set_estimation_params,TCMDEXEC_adcs_set_estimation_params,18,TCMD_READINESS_LEVEL_FOR_OPERATION,"magnetometer_rate_filter_system_noise (float; magnetometer rate filter system noise covariance parameter), extended_kalman_filter_system_noise (float; extended kalman filter system noise covariance parameter), coarse_sun_sensor_measurement_noise (float; CSS measurement noise covariance parameter), sun_sensor_measurement_noise (float; sun sensor measurement noise covariance parameter), nadir_sensor_measurement_noise (float; nadir sensor measurement noise covariance parameter), magnetometer_measurement_noise (float; magnetometer measurement noise covariance parameter), star_tracker_measurement_noise (float; star tracker measurement noise covariance parameter), use_sun_sensor (bool; whether or not to use the sun sensor measurement in extended_kalman_filter), use_nadir_sensor (bool; whether or not to use the nadir sensor measurement in extended_kalman_filter), use_css (bool; whether or not to use the CSS measurement in extended_kalman_filter), use_star_tracker (bool; whether or not to use the star tracker measurement in extended_kalman_filter), nadir_sensor_terminator_test (bool; select to ignore nadir sensor measurements when terminator is in FOV), automatic_magnetometer_recovery (bool; select whether automatic switch to redundant magnetometer should occur in case of failure), magnetometer_mode (enum; select magnetometer mode for estimation and control), magnetometer_selection_for_raw_magnetometer_telemetry (enum; select magnetometer mode for the second raw telemetry frame), automatic_estimation_transition_due_to_rate_sensor_errors (bool; enable/disable automatic transition from MEMS rate estimation mode to RKF in case of rate sensor error), wheel_30s_power_up_delay (bool; present in CubeSupport but not in the manual -- need to test), cam1_and_cam2_sampling_period (uint8; the manual calls it this, but CubeSupport calls it ""error counter reset period"" -- need to test)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: magnetometer_rate_filter_system_noise (float; magnetometer rate filter system noise covariance parameter) +- Arg 1: extended_kalman_filter_system_noise (float; extended kalman filter system noise covariance parameter) +- Arg 2: coarse_sun_sensor_measurement_noise (float; CSS measurement noise covariance parameter) +- Arg 3: sun_sensor_measurement_noise (float; sun sensor measurement noise covariance parameter) +- Arg 4: nadir_sensor_measurement_noise (float; nadir sensor measurement noise covariance parameter) +- Arg 5: magnetometer_measurement_noise (float; magnetometer measurement noise covariance parameter) +- Arg 6: star_tracker_measurement_noise (float; star tracker measurement noise covariance parameter) +- Arg 7: use_sun_sensor (bool; whether or not to use the sun sensor measurement in extended_kalman_filter) +- Arg 8: use_nadir_sensor (bool; whether or not to use the nadir sensor measurement in extended_kalman_filter) +- Arg 9: use_css (bool; whether or not to use the CSS measurement in extended_kalman_filter) +- Arg 10: use_star_tracker (bool; whether or not to use the star tracker measurement in extended_kalman_filter) +- Arg 11: nadir_sensor_terminator_test (bool; select to ignore nadir sensor measurements when terminator is in FOV) +- Arg 12: automatic_magnetometer_recovery (bool; select whether automatic switch to redundant magnetometer should occur in case of failure) +- Arg 13: magnetometer_mode (enum; select magnetometer mode for estimation and control) +- Arg 14: magnetometer_selection_for_raw_magnetometer_telemetry (enum; select magnetometer mode for the second raw telemetry frame) +- Arg 15: automatic_estimation_transition_due_to_rate_sensor_errors (bool; enable/disable automatic transition from MEMS rate estimation mode to RKF in case of rate sensor error) +- Arg 16: wheel_30s_power_up_delay (bool; present in CubeSupport but not in the manual -- need to test) +- Arg 17: cam1_and_cam2_sampling_period (uint8; the manual calls it this, but CubeSupport calls it ""error counter reset period"" -- need to test) +@return 0 on success, >0 on error" +adcs_get_estimation_params,TCMDEXEC_adcs_get_estimation_params,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_augmented_sgp4_params,TCMDEXEC_adcs_set_augmented_sgp4_params,17,TCMD_READINESS_LEVEL_FOR_OPERATION,"incl_coefficient (set inclination filter coefficient) (double), raan_coefficient (set RAAN filter coefficient) (double), ecc_coefficient (set eccentricity filter coefficient) (double), aop_coefficient (set argument of perigee filter coefficient) (double), time_coefficient (set time filter coefficient) (double), pos_coefficient (set position filter coefficient) (double), maximum_position_error (maximum position error for Augmented_SGP4 to continue working) (double), augmented_sgp4_filter (The type of filter being used (enum)), xp_coefficient (polar coefficient xdouble; p) (double), yp_coefficient (polar coefficient ydouble; p) (double), gps_roll_over (GPS roll over number), position_sd (maximum position standard deviation for Augmented_SGP4 to continue working) (double), velocity_sd (maximum velocity standard deviation for Augmented_SGP4 to continue working) (double), min_satellites (Minimum satellites required for Augmented_SGP4 to continue working), time_gain (time offset compensation gain) (double), max_lag (maximum lagged timestamp measurements to incorporate) (double), min_samples (Minimum samples to use to get Augmented_SGP4)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: incl_coefficient (set inclination filter coefficient) (double) +- Arg 1: raan_coefficient (set RAAN filter coefficient) (double) +- Arg 2: ecc_coefficient (set eccentricity filter coefficient) (double) +- Arg 3: aop_coefficient (set argument of perigee filter coefficient) (double) +- Arg 4: time_coefficient (set time filter coefficient) (double) +- Arg 5: pos_coefficient (set position filter coefficient) (double) +- Arg 6: maximum_position_error (maximum position error for Augmented_SGP4 to continue working) (double) +- Arg 7: augmented_sgp4_filter (The type of filter being used (enum)) +- Arg 8: xp_coefficient (polar coefficient xdouble; p) (double) +- Arg 9: yp_coefficient (polar coefficient ydouble; p) (double) +- Arg 10: gps_roll_over (GPS roll over number) +- Arg 11: position_sd (maximum position standard deviation for Augmented_SGP4 to continue working) (double) +- Arg 12: velocity_sd (maximum velocity standard deviation for Augmented_SGP4 to continue working) (double) +- Arg 13: min_satellites (Minimum satellites required for Augmented_SGP4 to continue working) +- Arg 14: time_gain (time offset compensation gain) (double) +- Arg 15: max_lag (maximum lagged timestamp measurements to incorporate) (double) +- Arg 16: min_samples (Minimum samples to use to get Augmented_SGP4) +@return 0 on success, >0 on error" +adcs_get_augmented_sgp4_params,TCMDEXEC_adcs_get_augmented_sgp4_params,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_tracking_controller_target_reference,TCMDEXEC_adcs_set_tracking_controller_target_reference,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"longitude (double), latitude (double), altitude (double)","@brief Telecommand: Set the ADCS tracking controller target reference (location on Earth to point towards) +@param args_str +- Arg 0: longitude (double) +- Arg 1: latitude (double) +- Arg 2: altitude (double) +@return 0 on success, >0 on error" +adcs_get_tracking_controller_target_reference,TCMDEXEC_adcs_get_tracking_controller_target_reference,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_rate_gyro_config,TCMDEXEC_adcs_set_rate_gyro_config,7,TCMD_READINESS_LEVEL_FOR_OPERATION,"gyro1 (Axis for Gyro #1; enum, options are pos/neg x, pos/neg y, pos/neg z), gyro2 (Axis for Gyro #2; enum, options are pos/neg x, pos/neg y, pos/neg z), gyro3 (Axis for Gyro #3; enum, options are pos/neg x, pos/neg y, pos/neg z), x_rate_offset (x-rate sensor offset) (double), y_rate_offset (y-rate sensor offset) (double), z_rate_offset (z-rate sensor offset) (double), rate_sensor_mult (multiplier of rate sensor measurement)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: gyro1 (Axis for Gyro #1; enum, options are pos/neg x, pos/neg y, pos/neg z) +- Arg 1: gyro2 (Axis for Gyro #2; enum, options are pos/neg x, pos/neg y, pos/neg z) +- Arg 2: gyro3 (Axis for Gyro #3; enum, options are pos/neg x, pos/neg y, pos/neg z) +- Arg 3: x_rate_offset (x-rate sensor offset) (double) +- Arg 4: y_rate_offset (y-rate sensor offset) (double) +- Arg 5: z_rate_offset (z-rate sensor offset) (double) +- Arg 6: rate_sensor_mult (multiplier of rate sensor measurement) +@return 0 on success, >0 on error" +adcs_get_rate_gyro_config,TCMDEXEC_adcs_get_rate_gyro_config,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_estimated_attitude_angles,TCMDEXEC_adcs_estimated_attitude_angles,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_magnetic_field_vector,TCMDEXEC_adcs_magnetic_field_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_fine_sun_vector,TCMDEXEC_adcs_fine_sun_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_nadir_vector,TCMDEXEC_adcs_nadir_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_commanded_wheel_speed,TCMDEXEC_adcs_commanded_wheel_speed,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_igrf_magnetic_field_vector,TCMDEXEC_adcs_igrf_magnetic_field_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_quaternion_error_vector,TCMDEXEC_adcs_quaternion_error_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_estimated_gyro_bias,TCMDEXEC_adcs_estimated_gyro_bias,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_estimation_innovation_vector,TCMDEXEC_adcs_estimation_innovation_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_cam1_sensor,TCMDEXEC_adcs_raw_cam1_sensor,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_cam2_sensor,TCMDEXEC_adcs_raw_cam2_sensor,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_coarse_sun_sensor_1_to_6,TCMDEXEC_adcs_raw_coarse_sun_sensor_1_to_6,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_coarse_sun_sensor_7_to_10,TCMDEXEC_adcs_raw_coarse_sun_sensor_7_to_10,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_cubecontrol_current,TCMDEXEC_adcs_cubecontrol_current,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_gps_status,TCMDEXEC_adcs_raw_gps_status,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_gps_time,TCMDEXEC_adcs_raw_gps_time,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_gps_x,TCMDEXEC_adcs_raw_gps_x,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_gps_y,TCMDEXEC_adcs_raw_gps_y,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_gps_z,TCMDEXEC_adcs_raw_gps_z,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_measurements,TCMDEXEC_adcs_measurements,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_generic_command,TCMDEXEC_adcs_generic_command,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"ID of the telecommand to send (see Firmware Reference Manual), hex array of data bytes of length up to 504 (longest command is almost ADCS Configuration (ID 26/204) at 504 bytes)","@brief Telecommand: execute a generic command on the ADCS +@param args_str +- Arg 0: ID of the telecommand to send (see Firmware Reference Manual) +- Arg 1: hex array of data bytes of length up to 504 (longest command is almost ADCS Configuration (ID 26/204) at 504 bytes) +@return 0 on success, >0 on error" +adcs_generic_telemetry_request,TCMDEXEC_adcs_generic_telemetry_request,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"ID of the telemetry request to send (see Firmware Reference Manual), number of data bytes expected to receive from the ADCS (also see Firmware Reference Manual, up to 504)","@brief Telecommand: obtain generic telemetry from the ADCS +@param args_str +- Arg 0: ID of the telemetry request to send (see Firmware Reference Manual) +- Arg 1: number of data bytes expected to receive from the ADCS (also see Firmware Reference Manual, up to 504) +@return 0 on success, >0 on error" +log_set_sink_enabled_state,TCMDEXEC_log_set_sink_enabled_state,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Sink enum value, Enabled? 0: disable sink, 1: enable sink","@brief Telecommand: Set a LOG sink's enabled state +@param args_str +- Arg 0: Sink enum value +- Arg 1: Enabled? 0: disable sink, 1: enable sink +@details FrontierSat LOG sinks +LOG_SINK_UHF_RADIO = 1 +LOG_SINK_FILE = 2 +LOG_SINK_UMBILICAL_UART = 4" +log_set_system_file_logging_enabled_state,TCMDEXEC_log_set_system_file_logging_enabled_state,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Subsystem enum value, Enabled? 0: disable file logging, 1: enable file logging","@brief Telecommand: Set a LOG subsystem's file logging enabled state +@param args_str +- Arg 0: Subsystem enum value +- Arg 1: Enabled? 0: disable file logging, 1: enable file logging +@details FrontierSat LOG sinks +LOG_SYSTEM_OBC = 1 +LOG_SYSTEM_UHF_RADIO = 2 +LOG_SYSTEM_UMBILICAL_UART = 4 +LOG_SYSTEM_GPS = 8 +LOG_SYSTEM_MPI = 16 +LOG_SYSTEM_EPS = 32 +LOG_SYSTEM_BOOM = 64 +LOG_SYSTEM_ADCS = 128 +LOG_SYSTEM_LFS = 256 +LOG_SYSTEM_FLASH = 512 +LOG_SYSTEM_ANTENNA_DEPLOY = 1024 +LOG_SYSTEM_LOG = 2048 +LOG_SYSTEM_TELECOMMAND = 4096 +LOG_SYSTEM_UNIT_TEST = 8192" +log_report_sink_enabled_state,TCMDEXEC_log_report_sink_enabled_state,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Sink enum,"@brief Telecommand: Report a LOG sink's enabled state +@param args_str +- Arg 0: Sink enum" +log_report_all_sink_enabled_states,TCMDEXEC_log_report_all_sink_enabled_states,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,@brief Telecommand: Report all LOG sink enable states +log_report_system_file_logging_state,TCMDEXEC_log_report_system_file_logging_state,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Subsystem enum,"@brief Telecommand: Report LOG subsystem's file logging state (and show +logging filename) +@param args_str +- Arg 0: Subsystem enum" +log_report_all_system_file_logging_states,TCMDEXEC_log_report_all_system_file_logging_states,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,@brief Telecommand: Report all LOG subsystem file logging states +log_set_sink_debugging_messages_state,TCMDEXEC_log_set_sink_debugging_messages_state,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Sink enum, State 0: disable debug messages, 1: enable debug messages","@brief Telecommand: Enable or disable debugging messages for LOG sink +@param args_str +- Arg 0: Sink enum +- Arg 1: State 0: disable debug messages, 1: enable debug messages" +log_set_system_debugging_messages_state,TCMDEXEC_log_set_system_debugging_messages_state,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Subsystem enum, State 0: disable debug messages, 1: enable debug messages","@brief Telecommand: Enable or disable debugging messages for LOG subsystem +@param args_str +- Arg 0: Subsystem enum +- Arg 1: State 0: disable debug messages, 1: enable debug messages" +log_report_latest_message_from_memory,TCMDEXEC_log_report_latest_message_from_memory,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Report the latest log message to the incoming +telecommand channel" +log_report_n_latest_messages_from_memory,TCMDEXEC_log_report_n_latest_messages_from_memory,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Number of latest log messages to report,"@brief Telecommand: Report the N latest log messages to the incoming +telecommand channel +@param args_str +- Arg 0: Number of latest log messages to report" +freetos_list_tasks_jsonl,TCMDEXEC_freetos_list_tasks_jsonl,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand that return metadata regarding Tasks from FreeRTOS +@param args_str No arguments expected +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 if successful, >0 if an error occurred (but hello_world can't return an error)" +freertos_demo_stack_usage,TCMDEXEC_freertos_demo_stack_usage,1,TCMD_READINESS_LEVEL_FLIGHT_TESTING,num_bytes (uint64_t) - The number of elements to allocate in the VLA. <=1_000_000.,"@brief Demo using stack memory by allocating a Variable-Length Array (VLA) on the stack. +@param args_str +- Arg 0: num_bytes (uint64_t) - The number of elements to allocate in the VLA. <=1_000_000. +@return 0 on success, >0 on error" +eps_watchdog,TCMDEXEC_eps_watchdog,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Triggers/services the EPS watchdog. No args. +@param args_str No arguments. +@return 0 on success, 1 on failure." +eps_system_reset,TCMDEXEC_eps_system_reset,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Resets the EPS system. +@param args_str No arguments. +@return 0 on success, 1 on failure." +eps_no_operation,TCMDEXEC_eps_no_operation,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Calls the EPS no-op (no operation) command. Likely not useful. +@param args_str No arguments. +@return 0 on success, 1 on failure." +eps_cancel_operation,TCMDEXEC_eps_cancel_operation,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Calls the EPS cancel operation command. Likely not useful. +@param args_str No arguments. +@return 0 on success, 1 on failure. +@note This command likely isn't useful, as telecommands cannot be trigger simultaneously, and +thus another command to the EPS cannot really be cancelled from here." +eps_switch_to_mode,TCMDEXEC_eps_switch_to_mode,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"New mode to switch to. Either ""nominal"" or ""safety"".","@brief Switches the EPS to ""nominal"" or ""safety"" mode. +@param args_str +- Arg 0: New mode to switch to. Either ""nominal"" or ""safety"". +@return 0 on success, 1 on failure. +@note See EPS Software ICD, Page 12, Section 3 (Functional Description) for state/mode definitions." +eps_set_channel_enabled,TCMDEXEC_eps_set_channel_enabled,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"The channel name or number (string)., 1 to enable (power on), 0 to disable (power off)","@brief Sets the EPS channel to be enabled (on) or disabled (off). +@param args_str +- Arg 0: The channel name or number (string). +- Arg 1: 1 to enable (power on), 0 to disable (power off) +@return 0 on success, >0 on failure +@note Valid string values for Arg 0: ""vbatt_stack"", ""stack_5v"", ""stack_3v3"", ""camera"", +""uhf_antenna_deploy"", ""lora_module"", ""mpi"", ""boom""." +eps_get_system_status_json,TCMDEXEC_eps_get_system_status_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS system status, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pdu_overcurrent_fault_state_json,TCMDEXEC_eps_get_pdu_overcurrent_fault_state_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PDU (Power Distribution Unit) overcurrent fault status, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pbu_abf_placed_state_json,TCMDEXEC_eps_get_pbu_abf_placed_state_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PBU (Power Battery Unit) ABF placed status, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pdu_housekeeping_data_eng_json,TCMDEXEC_eps_get_pdu_housekeeping_data_eng_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PDU (Power Distribution Unit) housekeeping data, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pdu_housekeeping_data_run_avg_json,TCMDEXEC_eps_get_pdu_housekeeping_data_run_avg_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PDU (Power Distribution Unit) housekeeping data (running average), and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pbu_housekeeping_data_eng_json,TCMDEXEC_eps_get_pbu_housekeeping_data_eng_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PBU (Power Battery Unit) housekeeping data, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pbu_housekeeping_data_run_avg_json,TCMDEXEC_eps_get_pbu_housekeeping_data_run_avg_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PBU (Power Battery Unit) housekeeping data (running average), and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pcu_housekeeping_data_eng_json,TCMDEXEC_eps_get_pcu_housekeeping_data_eng_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PCU (Power Conditioning Unit, solar panel MPPT) housekeeping data, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pcu_housekeeping_data_run_avg_json,TCMDEXEC_eps_get_pcu_housekeeping_data_run_avg_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PCU (Power Conditioning Unit, solar panel MPPT) housekeeping data (running average), and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_piu_housekeeping_data_eng_json,TCMDEXEC_eps_get_piu_housekeeping_data_eng_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Gets the EPS PIU (Power Integrated Unit, info about all systems) housekeeping data, and returns it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_piu_housekeeping_data_run_avg_json,TCMDEXEC_eps_get_piu_housekeeping_data_run_avg_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PIU (Power Integrated Unit, info about all systems) housekeeping data (running average), and display it as a JSON string. +@return 0 on success, >0 on failure." +agenda_delete_all,TCMDEXEC_agenda_delete_all,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Delete all agendas +@param args_str No arguments needed +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 on success" +agenda_delete_by_tssent,TCMDEXEC_agenda_delete_by_tssent,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Timestamp sent (uint64_t) - The tssent timestamp of the agenda entry to delete.,"@brief Telecommand: Delete agenda entry by tssent timestamp +@param args_str +- Arg 0: Timestamp sent (uint64_t) - The tssent timestamp of the agenda entry to delete. +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 on success, >0 on error" +agenda_fetch_jsonl,TCMDEXEC_agenda_fetch_jsonl,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Fetch all pending agenda items, and log them each as JSONL +@param args_str No arguments needed +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 on success, 1 if there are no active agendas." +agenda_delete_by_name,TCMDEXEC_agenda_delete_by_name,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"telecommand name (string) - The name of the telecommand function in the agenda to delete. (e.g, hello_world)","@brief Telecommand: Delete all agenda entries with a telecommand name +@param args_str +- Arg 0: telecommand name (string) - The name of the telecommand function in the agenda to delete. (e.g, hello_world) +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 on success, > 0 on error" +mpi_send_command_hex,TCMDEXEC_mpi_send_command_hex,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"Hex-encoded string representing the configuration command + arguments (IF ANY) to send to the MPI, INCLUDING 'TC' (0x54 0x43)","@brief Send a configuration command & params (IF ANY) to the MPI encoded in hex +@param args_str +- Arg 0: Hex-encoded string representing the configuration command + arguments (IF ANY) to send to the MPI, INCLUDING 'TC' (0x54 0x43) +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0: Success, 1: Invalid Input, 2: Failed UART transmission, 3: Failed UART reception, +4: MPI timeout before sending 1 byte, 5: MPI failed to execute CMD" +mpi_demo_tx_to_mpi,TCMDEXEC_mpi_demo_tx_to_mpi,0,TCMD_READINESS_LEVEL_GROUND_USAGE_ONLY,,"@brief Sends a message over UART to the MPI. +@param args_str No args. +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0: Success, >0: Failure" +stm32_internal_flash_read,TCMDEXEC_stm32_internal_flash_read,2,TCMD_READINESS_LEVEL_GROUND_USAGE_ONLY,"The address to start reading from, The number of bytes to read as a uint64_t","@brief Read data from the internal flash bank +@param args_str +- Arg 0: The address to start reading from +- Arg 1: The number of bytes to read as a uint64_t +@return 0 on success, > 0 on error" +stm32_internal_flash_write,TCMDEXEC_stm32_internal_flash_write,2,TCMD_READINESS_LEVEL_GROUND_USAGE_ONLY,"The data in hex format to write, The offset to start writing from","@brief Write data to the internal flash bank starting from address 0x08100000 +@param args_str +- Arg 0: The data in hex format to write +- Arg 1: The offset to start writing from +@note This telecommand is only for testing purposes, it is purposfully not fully fleshed out +as there is no intention on using this. Update as needed +@return 0 on success, > 0 on error" +stm32_internal_flash_erase,TCMDEXEC_stm32_internal_flash_erase,2,TCMD_READINESS_LEVEL_GROUND_USAGE_ONLY,"The starting page to erase as a uint64_t, The number of pages to erase as a uint64_t","@brief Erase a range of pages in the internal flash bank. +Only Erases for Flash Bank 2. +@param args_str +- Arg 0: The starting page to erase as a uint64_t +- Arg 1: The number of pages to erase as a uint64_t +@return 0 on success, > 0 on error" +ant_reset,TCMDEXEC_ant_reset,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B""","@brief Resets the specified antenna deployment system's microcontroller +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +@return 0 on success, > 0 otherwise" +ant_arm_antenna_system,TCMDEXEC_ant_arm_antenna_system,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B""","@brief Telecommand: Arm the antenna deploy system +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +@return 0 on success, >0 on error" +ant_disarm_antenna_system,TCMDEXEC_ant_disarm_antenna_system,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to disarm, and which i2c bus to use","@brief Disarms the specified antenna deploy system's mcu +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to disarm, and which i2c bus to use +@return 0 on success, 0 > otherwise" +ant_deploy_antenna,TCMDEXEC_ant_deploy_antenna,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Either ""A"" or ""B"", antenna number. between 1-4, Activation time in seconds","@brief Telecommand: Initiates deployment of the selected antenna +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Either ""A"" or ""B"" +- Arg 1: antenna number. between 1-4 +- Arg 2: Activation time in seconds +@return 0 on success, >0 on error" +ant_start_automated_antenna_deployment,TCMDEXEC_ant_start_automated_antenna_deployment,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"", Activation time in seconds","@brief begins deployment of all antennas, one by one. +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +- Arg 1: Activation time in seconds +@return returns 0 on success, > 0 otherwise" +ant_deploy_antenna_with_override,TCMDEXEC_ant_deploy_antenna_with_override,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"", antenna number. between 1-4, Activation time in seconds","@brief Telecommand: Initiates deployment of the selected antenna, ignoring whether the antennas current status is deployed. +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +- Arg 1: antenna number. between 1-4 +- Arg 2: Activation time in seconds +@return 0 on successful communication, >0 on communications error" +ant_cancel_deployment_system_activation,TCMDEXEC_ant_cancel_deployment_system_activation,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B""","@brief Cancels any active attempts to deploy an antenna +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +@return 0 on successful communication, > 0 on communications error" +ant_measure_temp,TCMDEXEC_ant_measure_temp,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B""","@brief Telecommand: Measures the temperature of the antenna controller in centi-degrees celsius +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +@return 0 on success, >0 on error" +ant_report_deployment_status,TCMDEXEC_ant_report_deployment_status,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B""","@brief Prints the deployment status of all antennas +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +@return 0 on successful communication, > 0 on communications error" +ant_report_antenna_deployment_activation_count,TCMDEXEC_ant_report_antenna_deployment_activation_count,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"", the antenna to check, between 1-4","@brief Prints the number of times deployment was attempted on the selected antenna +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +- Arg 1: the antenna to check, between 1-4 +@return 0 on successful communication, > 0 on communications error" +ant_report_antenna_deployment_activation_time,TCMDEXEC_ant_report_antenna_deployment_activation_time,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"", the antenna to check, between 1-4","@brief Prints amount of time the deployment system has been active for for the selected antenna +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +- Arg 1: the antenna to check, between 1-4 +@return 0 on successful communication, > 0 on communications error" +obc_read_temperature,TCMDEXEC_obc_read_temperature,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Precision we want the temperature to be (9-12 bits).,"@brief Reads the temperature from the STDS75DS2F and stores it in the provided variable temperature. +Temperature range is -55 to 125 degrees celsius with +/- 3 degrees celsius accuracy over the whole range. +@param args_str +- Arg 0: Precision we want the temperature to be (9-12 bits). +@return 0 if successful, 1 if error." +comms_dipole_switch_set_state,TCMDEXEC_comms_dipole_switch_set_state,1,TCMD_READINESS_LEVEL_FLIGHT_TESTING,"The state of the dipole switch. Either ""1"" or ""2"".","@brief Sets the state of the dipole switch on the OBC to either Antenna 1 or Antenna 2. +@param args_str +- Arg 0: The state of the dipole switch. Either ""1"" or ""2"". +@return" diff --git a/spreadsheets/telecommands_2024-12-02_11-12.csv b/spreadsheets/telecommands_2024-12-02_11-12.csv new file mode 100644 index 0000000..38877e2 --- /dev/null +++ b/spreadsheets/telecommands_2024-12-02_11-12.csv @@ -0,0 +1,694 @@ +Name,Function,Number of Args,Readiness Level,Arguments,Docstring +hello_world,TCMDEXEC_hello_world,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief A simple telecommand that responds with ""Hello, world!"" +@param args_str No arguments expected +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 if successful, >0 if an error occurred (but hello_world can't return an error)" +heartbeat_off,TCMDEXEC_heartbeat_off,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +heartbeat_on,TCMDEXEC_heartbeat_on,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +core_system_stats,TCMDEXEC_core_system_stats,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +get_system_time,TCMDEXEC_get_system_time,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +set_system_time,TCMDEXEC_set_system_time,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Unix epoch time in milliseconds (uint64_t),"@brief Set the system time to the provided Unix epoch time in milliseconds +@param args_str +- Arg 0: Unix epoch time in milliseconds (uint64_t) +@return 0 if successful, 1 if error" +correct_system_time,TCMDEXEC_correct_system_time,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"Correction time in milliseconds (int64_t). Positive = forward in time, negative = backward in time.","@brief Adjust the system time with a signed int +@param args_str +- Arg 0: Correction time in milliseconds (int64_t). Positive = forward in time, negative = backward in time. +@return 0 if successful, 1 if error" +set_eps_time_based_on_obc_time,TCMDEXEC_set_eps_time_based_on_obc_time,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Sync's eps time to obc time (+/- 1 second) +@return 0 on success, >0 on failure." +set_obc_time_based_on_eps_time,TCMDEXEC_set_obc_time_based_on_eps_time,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Sync's obc time to eps time (+/- 1 second) +@return 0 on success, >0 on failure." +available_telecommands,TCMDEXEC_available_telecommands,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +reboot,TCMDEXEC_reboot,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +scan_i2c_bus,TCMDEXEC_scan_i2c_bus,1,TCMD_READINESS_LEVEL_FOR_OPERATION,I2C bus to scan (1-4),"@brief Scans the I2C bus for devices. Prints out the addresses of devices found. +@param args_str +- Arg 0: I2C bus to scan (1-4) +@return 0 if successful, 1 if error." +echo_back_args,TCMDEXEC_echo_back_args,1,TCMD_READINESS_LEVEL_FOR_OPERATION,The string to echo back.,"@brief A demo telecommand that echoes back the argument it received. +@param args_str +- Arg 0: The string to echo back." +echo_back_uint32_args,TCMDEXEC_echo_back_uint32_args,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"The first integer to echo back., The second integer to echo back., The third integer to echo back.","@brief A demo telecommand that echoes back each integer argument it received. +@param args_str 3 integer arguments to echo back. +- Arg 0: The first integer to echo back. +- Arg 1: The second integer to echo back. +- Arg 2: The third integer to echo back. +@return 0 if all ints are parsed successfully, otherwise the error code of the first failed parse." +run_all_unit_tests,TCMDEXEC_run_all_unit_tests,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +demo_blocking_delay,TCMDEXEC_demo_blocking_delay,1,TCMD_READINESS_LEVEL_FLIGHT_TESTING,delay_ms (uint64_t) - The number of milliseconds to delay for. <=30_000ms.,"@brief Delay for a specified number of milliseconds, for testing purposes. +@param args_str 1 argument: delay_ms (uint64_t) +- Arg 0: delay_ms (uint64_t) - The number of milliseconds to delay for. <=30_000ms. +@return 0 on success, 1 on error" +config_set_int_var,TCMDEXEC_config_set_int_var,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"variable name, new value","@brief Set an integer configuration variable +@param args_str +- Arg 0: variable name +- Arg 1: new value +@param response_output_buf Buffer to write the response to +@param response_output_buf_len Max length of the buffer +@return 0 if successful, >0 if an error occurred" +config_set_str_var,TCMDEXEC_config_set_str_var,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"variable name, new value","@brief Set a string configuration variable +@param args_str +- Arg 0: variable name +- Arg 1: new value +@return 0 if successful, >0 if an error occurred" +config_get_int_var_json,TCMDEXEC_config_get_int_var_json,1,TCMD_READINESS_LEVEL_FOR_OPERATION,variable name,"@brief Get an integer configuration variable +@param args_str +- Arg 0: variable name +@return 0 if successful, >0 if an error occurred" +config_get_str_var_json,TCMDEXEC_config_get_str_var_json,1,TCMD_READINESS_LEVEL_FOR_OPERATION,variable name,"@brief Get a string configuration variable +@param args_str +- Arg 0: variable name +@return 0 if successful, >0 if an error occurred" +config_get_all_vars_jsonl,TCMDEXEC_config_get_all_vars_jsonl,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get all configuration variables, as JSON. One variable per line. +@param args_str No arguments. +@return 0 if successful, >0 if an error occurred" +flash_activate_each_cs,TCMDEXEC_flash_activate_each_cs,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Read bytes as hex from a flash address +@param args_str No args. +@return 0 always" +flash_each_is_reachable,TCMDEXEC_flash_each_is_reachable,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Read bytes as hex from a flash address +@param args_str No args. +@return 0 always" +flash_read_hex,TCMDEXEC_flash_read_hex,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"Chip Number (CS number) as uint, Page number as uint, Number of bytes to read as uint","@brief Telecommand: Read bytes as hex from a page number +@param args_str +- Arg 0: Chip Number (CS number) as uint +- Arg 1: Page number as uint +- Arg 2: Number of bytes to read as uint +@return 0 on success, >0 on error" +flash_write_hex,TCMDEXEC_flash_write_hex,3,TCMD_READINESS_LEVEL_FLIGHT_TESTING,"Chip Number (CS number) as uint, Page number as uint, Hex string of bytes to write (any case, allows space/underscore separators)","@brief Telecommand: Write a hex string of bytes to a page number +@param args_str +- Arg 0: Chip Number (CS number) as uint +- Arg 1: Page number as uint +- Arg 2: Hex string of bytes to write (any case, allows space/underscore separators) +@return 0 on success, >0 on error" +flash_erase,TCMDEXEC_flash_erase,2,TCMD_READINESS_LEVEL_FLIGHT_TESTING,"Chip Number (CS number) as uint, Page number as uint","@brief Telecommand: Erase a block of flash memory containing the given page number. +@param args_str +- Arg 0: Chip Number (CS number) as uint +- Arg 1: Page number as uint +@return 0 on success, >0 on error" +flash_benchmark_erase_write_read,TCMDEXEC_flash_benchmark_erase_write_read,3,TCMD_READINESS_LEVEL_FLIGHT_TESTING,"Chip Number (CS number) as uint, Test Data Address as uint, Test Data Length as uint","@brief Telecommand: Benchmarks the erase/write/read operations on the flash memory module. +@param args_str +- Arg 0: Chip Number (CS number) as uint +- Arg 1: Test Data Address as uint +- Arg 2: Test Data Length as uint +@return 0 on success, >0 on error" +flash_reset,TCMDEXEC_flash_reset,1,TCMD_READINESS_LEVEL_IN_PROGRESS,Chip Number (CS number) as uint,"@brief Telecommand: Reset the flash memory module. +@param args_str +- Arg 0: Chip Number (CS number) as uint +@return 0 on success, >0 on error" +flash_read_status_register,TCMDEXEC_flash_read_status_register,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Chip Number (CS number) as uint,"@brief Telecommand: Read and print Status Register value as hex from the flash memory module. +@param args_str +- Arg 0: Chip Number (CS number) as uint +@return 0 on success, >0 on error" +flash_write_enable,TCMDEXEC_flash_write_enable,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Chip Number (CS number) as uint,"@brief Telecommand: Set the write enable lath to high on the flash memory module +@param args_str +- Arg 0: Chip Number (CS number) as uint +@return 0 on success, >0 on error" +fs_format_storage,TCMDEXEC_fs_format_storage,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +fs_mount,TCMDEXEC_fs_mount,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +fs_unmount,TCMDEXEC_fs_unmount,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +fs_write_file,TCMDEXEC_fs_write_file,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"File path as string, String to write to file","@brief Telecommand: Write data to a file in LittleFS +@param args_str +- Arg 0: File path as string +- Arg 1: String to write to file" +fs_read_file_hex,TCMDEXEC_fs_read_file_hex,1,TCMD_READINESS_LEVEL_FOR_OPERATION,File path as string,"@brief Reads a file from LittleFS, and responds with its contents as 2-digit hex bytes. +@param args_str +- Arg 0: File path as string +@return 0 on success, >0 on error" +fs_read_text_file,TCMDEXEC_fs_read_text_file,1,TCMD_READINESS_LEVEL_FOR_OPERATION,File path as string,"@brief Reads a file from LittleFS, and responds with its contents as 2-digit hex bytes. +@param args_str +- Arg 0: File path as string +@return 0 on success, >0 on error" +fs_demo_write_then_read,TCMDEXEC_fs_demo_write_then_read,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +fs_benchmark_write_read,TCMDEXEC_fs_benchmark_write_read,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Write chunk size (bytes), Write chunk count","@brief Telecommand: Benchmark LittleFS write and read operations +@param args_str +- Arg 0: Write chunk size (bytes) +- Arg 1: Write chunk count +@return 0 on success, 1 if error parsing args, 2 if benchmark failed +@note The maximum write chunk size is 127 bytes, apparently; need to investigate why so small." +adcs_ack,TCMDEXEC_adcs_ack,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_wheel_speed,TCMDEXEC_adcs_set_wheel_speed,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"wheel speed x value, wheel speed y value, wheel speed z value","@brief Telecommand: Set the wheel speed of the ADCS +@param args_str +- Arg 0: wheel speed x value +- Arg 1: wheel speed y value +- Arg 2: wheel speed z value +@return 0 on success, >0 on error" +adcs_reset,TCMDEXEC_adcs_reset,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_identification,TCMDEXEC_adcs_identification,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_program_status,TCMDEXEC_adcs_program_status,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_communication_status,TCMDEXEC_adcs_communication_status,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_deploy_magnetometer,TCMDEXEC_adcs_deploy_magnetometer,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_run_mode,TCMDEXEC_adcs_set_run_mode,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"run mode to set; can be can be off (0), enabled (1), triggered (2), or simulation (3)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: run mode to set; can be can be off (0), enabled (1), triggered (2), or simulation (3) +@return 0 on success, >0 on error" +adcs_clear_errors,TCMDEXEC_adcs_clear_errors,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_attitude_control_mode,TCMDEXEC_adcs_attitude_control_mode,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Control mode to set (Table 77 in Firmware Manual), Timeout to set control mode","@brief Telecommand: Set the attitude control mode of the ADCS; needs Power Control to be set before working +@param args_str +- Arg 0: Control mode to set (Table 77 in Firmware Manual) +- Arg 1: Timeout to set control mode +@return 0 on success, >0 on error" +adcs_attitude_estimation_mode,TCMDEXEC_adcs_attitude_estimation_mode,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_run_once,TCMDEXEC_adcs_run_once,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: If ADCS run mode is Triggered, run the ADCS sensor loop +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_magnetometer_mode,TCMDEXEC_adcs_set_magnetometer_mode,1,TCMD_READINESS_LEVEL_FOR_OPERATION,magnetometer mode to set,"@brief Telecommand: Set the magnetometer mode of the ADCS +@param args_str +- Arg 0: magnetometer mode to set +@return 0 on success, >0 on error" +adcs_set_magnetorquer_output,TCMDEXEC_adcs_set_magnetorquer_output,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"magnetorquer x duty cycle (double), magnetorquer y duty cycle (double), magnetorquer z duty cycle (double)","@brief Telecommand: Set the magnetorquer output values +@param args_str +- Arg 0: magnetorquer x duty cycle (double) +- Arg 1: magnetorquer y duty cycle (double) +- Arg 2: magnetorquer z duty cycle (double) +@return 0 on success, >0 on error" +adcs_save_config,TCMDEXEC_adcs_save_config,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_estimate_angular_rates,TCMDEXEC_adcs_estimate_angular_rates,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_llh_position,TCMDEXEC_adcs_get_llh_position,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_power_control,TCMDEXEC_adcs_get_power_control,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_power_control,TCMDEXEC_adcs_set_power_control,10,TCMD_READINESS_LEVEL_FOR_OPERATION,"Power control mode for cube control signal, Power control mode for cube control motor, Power control mode for cube sense 1, Power control mode for cube sense 2, Power control mode for cube star, Power control mode for cube wheel 1, Power control mode for cube wheel 2, Power control mode for cube wheel 3, Power control mode for motor, Power control mode for gps","@brief Telecommand: Set the power control mode of each component of the ADCS; for each, 0 turns the component off, 1 turns it on, and 2 keeps it the same as previously. +@param args_str +- Arg 0: Power control mode for cube control signal +- Arg 1: Power control mode for cube control motor +- Arg 2: Power control mode for cube sense 1 +- Arg 3: Power control mode for cube sense 2 +- Arg 4: Power control mode for cube star +- Arg 5: Power control mode for cube wheel 1 +- Arg 6: Power control mode for cube wheel 2 +- Arg 7: Power control mode for cube wheel 3 +- Arg 8: Power control mode for motor +- Arg 9: Power control mode for gps +@return 0 on success, >0 on error" +adcs_set_magnetometer_config,TCMDEXEC_adcs_set_magnetometer_config,15,TCMD_READINESS_LEVEL_FOR_OPERATION,"Mounting transform alpha angle [deg] (double), Mounting transform beta angle [deg] (double), Mounting transform gamma angle [deg] (double), Channel 1 offset value (double), Channel 2 offset value (double), Channel 3 offset value (double), Value (1, 1) of the magnetometer sensitivity matrix (double), Value (2, 2) of the magnetometer sensitivity matrix (double), Value (3, 3) of the magnetometer sensitivity matrix (double), Value (1, 2) of the magnetometer sensitivity matrix (double), Value (1, 3) of the magnetometer sensitivity matrix (double), Value (2, 1) of the magnetometer sensitivity matrix (double), Value (2, 3) of the magnetometer sensitivity matrix (double), Value (3, 1) of the magnetometer sensitivity matrix (double), Value (3, 2) of the magnetometer sensitivity matrix (double)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: Mounting transform alpha angle [deg] (double) +- Arg 1: Mounting transform beta angle [deg] (double) +- Arg 2: Mounting transform gamma angle [deg] (double) +- Arg 3: Channel 1 offset value (double) +- Arg 4: Channel 2 offset value (double) +- Arg 5: Channel 3 offset value (double) +- Arg 6: Value (1, 1) of the magnetometer sensitivity matrix (double) +- Arg 7: Value (2, 2) of the magnetometer sensitivity matrix (double) +- Arg 8: Value (3, 3) of the magnetometer sensitivity matrix (double) +- Arg 9: Value (1, 2) of the magnetometer sensitivity matrix (double) +- Arg 10: Value (1, 3) of the magnetometer sensitivity matrix (double) +- Arg 11: Value (2, 1) of the magnetometer sensitivity matrix (double) +- Arg 12: Value (2, 3) of the magnetometer sensitivity matrix (double) +- Arg 13: Value (3, 1) of the magnetometer sensitivity matrix (double) +- Arg 14: Value (3, 2) of the magnetometer sensitivity matrix (double) +@return 0 on success, >0 on error" +adcs_bootloader_clear_errors,TCMDEXEC_adcs_bootloader_clear_errors,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_unix_time_save_mode,TCMDEXEC_adcs_set_unix_time_save_mode,4,TCMD_READINESS_LEVEL_FOR_OPERATION,"whether to save the current Unix time immediately (bool passed as int; 1 = save immediately, 0 = don't save immediately), whether to save the current Unix time whenever a command is used to update it (bool passed as int; 1 = save on command, 0 = don't), whether to save the current Unix time periodically (bool passed as int; 1 = save periodically, 0 = don't), the period of saving the current Unix time","@brief Telecommand: Choose the circumstances to save the current Unix time +@param args_str +- Arg 0: whether to save the current Unix time immediately (bool passed as int; 1 = save immediately, 0 = don't save immediately) +- Arg 1: whether to save the current Unix time whenever a command is used to update it (bool passed as int; 1 = save on command, 0 = don't) +- Arg 2: whether to save the current Unix time periodically (bool passed as int; 1 = save periodically, 0 = don't) +- Arg 3: the period of saving the current Unix time +@return 0 on success, >0 on error" +adcs_get_unix_time_save_mode,TCMDEXEC_adcs_get_unix_time_save_mode,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_sgp4_orbit_params,TCMDEXEC_adcs_set_sgp4_orbit_params,8,TCMD_READINESS_LEVEL_FOR_OPERATION,"inclination (degrees) (double), eccentricity (dimensionless) (double), right ascension of the ascending node (degrees) (double), argument of perigee (degrees) (double), b-star drag term (dimensionless) (double), mean motion (orbits per day) (double), mean anomaly (degrees) (double), epoch (integer component is year, decimal component is day) (double)","@brief Telecommand: Set the ADCS Simplified General Perturbations (SGP4) orbit parameters +@param args_str +- Arg 0: inclination (degrees) (double) +- Arg 1: eccentricity (dimensionless) (double) +- Arg 2: right ascension of the ascending node (degrees) (double) +- Arg 3: argument of perigee (degrees) (double) +- Arg 4: b-star drag term (dimensionless) (double) +- Arg 5: mean motion (orbits per day) (double) +- Arg 6: mean anomaly (degrees) (double) +- Arg 7: epoch (integer component is year, decimal component is day) (double) +@return 0 on success, >0 on error" +adcs_get_sgp4_orbit_params,TCMDEXEC_adcs_get_sgp4_orbit_params,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_save_orbit_params,TCMDEXEC_adcs_save_orbit_params,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_rate_sensor_rates,TCMDEXEC_adcs_rate_sensor_rates,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_wheel_speed,TCMDEXEC_adcs_get_wheel_speed,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_magnetorquer_command,TCMDEXEC_adcs_get_magnetorquer_command,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_raw_magnetometer_values,TCMDEXEC_adcs_get_raw_magnetometer_values,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_estimate_fine_angular_rates,TCMDEXEC_adcs_estimate_fine_angular_rates,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_magnetometer_config,TCMDEXEC_adcs_get_magnetometer_config,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_commanded_attitude_angles,TCMDEXEC_adcs_get_commanded_attitude_angles,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_commanded_attitude_angles,TCMDEXEC_adcs_set_commanded_attitude_angles,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"x attitude angle (double), y attitude angle (double), z attitude angle (double)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: x attitude angle (double) +- Arg 1: y attitude angle (double) +- Arg 2: z attitude angle (double) +@return 0 on success, >0 on error" +adcs_set_estimation_params,TCMDEXEC_adcs_set_estimation_params,18,TCMD_READINESS_LEVEL_FOR_OPERATION,"magnetometer_rate_filter_system_noise (float; magnetometer rate filter system noise covariance parameter), extended_kalman_filter_system_noise (float; extended kalman filter system noise covariance parameter), coarse_sun_sensor_measurement_noise (float; CSS measurement noise covariance parameter), sun_sensor_measurement_noise (float; sun sensor measurement noise covariance parameter), nadir_sensor_measurement_noise (float; nadir sensor measurement noise covariance parameter), magnetometer_measurement_noise (float; magnetometer measurement noise covariance parameter), star_tracker_measurement_noise (float; star tracker measurement noise covariance parameter), use_sun_sensor (bool; whether or not to use the sun sensor measurement in extended_kalman_filter), use_nadir_sensor (bool; whether or not to use the nadir sensor measurement in extended_kalman_filter), use_css (bool; whether or not to use the CSS measurement in extended_kalman_filter), use_star_tracker (bool; whether or not to use the star tracker measurement in extended_kalman_filter), nadir_sensor_terminator_test (bool; select to ignore nadir sensor measurements when terminator is in FOV), automatic_magnetometer_recovery (bool; select whether automatic switch to redundant magnetometer should occur in case of failure), magnetometer_mode (enum; select magnetometer mode for estimation and control), magnetometer_selection_for_raw_magnetometer_telemetry (enum; select magnetometer mode for the second raw telemetry frame), automatic_estimation_transition_due_to_rate_sensor_errors (bool; enable/disable automatic transition from MEMS rate estimation mode to RKF in case of rate sensor error), wheel_30s_power_up_delay (bool; present in CubeSupport but not in the manual -- need to test), cam1_and_cam2_sampling_period (uint8; the manual calls it this, but CubeSupport calls it ""error counter reset period"" -- need to test)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: magnetometer_rate_filter_system_noise (float; magnetometer rate filter system noise covariance parameter) +- Arg 1: extended_kalman_filter_system_noise (float; extended kalman filter system noise covariance parameter) +- Arg 2: coarse_sun_sensor_measurement_noise (float; CSS measurement noise covariance parameter) +- Arg 3: sun_sensor_measurement_noise (float; sun sensor measurement noise covariance parameter) +- Arg 4: nadir_sensor_measurement_noise (float; nadir sensor measurement noise covariance parameter) +- Arg 5: magnetometer_measurement_noise (float; magnetometer measurement noise covariance parameter) +- Arg 6: star_tracker_measurement_noise (float; star tracker measurement noise covariance parameter) +- Arg 7: use_sun_sensor (bool; whether or not to use the sun sensor measurement in extended_kalman_filter) +- Arg 8: use_nadir_sensor (bool; whether or not to use the nadir sensor measurement in extended_kalman_filter) +- Arg 9: use_css (bool; whether or not to use the CSS measurement in extended_kalman_filter) +- Arg 10: use_star_tracker (bool; whether or not to use the star tracker measurement in extended_kalman_filter) +- Arg 11: nadir_sensor_terminator_test (bool; select to ignore nadir sensor measurements when terminator is in FOV) +- Arg 12: automatic_magnetometer_recovery (bool; select whether automatic switch to redundant magnetometer should occur in case of failure) +- Arg 13: magnetometer_mode (enum; select magnetometer mode for estimation and control) +- Arg 14: magnetometer_selection_for_raw_magnetometer_telemetry (enum; select magnetometer mode for the second raw telemetry frame) +- Arg 15: automatic_estimation_transition_due_to_rate_sensor_errors (bool; enable/disable automatic transition from MEMS rate estimation mode to RKF in case of rate sensor error) +- Arg 16: wheel_30s_power_up_delay (bool; present in CubeSupport but not in the manual -- need to test) +- Arg 17: cam1_and_cam2_sampling_period (uint8; the manual calls it this, but CubeSupport calls it ""error counter reset period"" -- need to test) +@return 0 on success, >0 on error" +adcs_get_estimation_params,TCMDEXEC_adcs_get_estimation_params,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_augmented_sgp4_params,TCMDEXEC_adcs_set_augmented_sgp4_params,17,TCMD_READINESS_LEVEL_FOR_OPERATION,"incl_coefficient (set inclination filter coefficient) (double), raan_coefficient (set RAAN filter coefficient) (double), ecc_coefficient (set eccentricity filter coefficient) (double), aop_coefficient (set argument of perigee filter coefficient) (double), time_coefficient (set time filter coefficient) (double), pos_coefficient (set position filter coefficient) (double), maximum_position_error (maximum position error for Augmented_SGP4 to continue working) (double), augmented_sgp4_filter (The type of filter being used (enum)), xp_coefficient (polar coefficient xdouble; p) (double), yp_coefficient (polar coefficient ydouble; p) (double), gps_roll_over (GPS roll over number), position_sd (maximum position standard deviation for Augmented_SGP4 to continue working) (double), velocity_sd (maximum velocity standard deviation for Augmented_SGP4 to continue working) (double), min_satellites (Minimum satellites required for Augmented_SGP4 to continue working), time_gain (time offset compensation gain) (double), max_lag (maximum lagged timestamp measurements to incorporate) (double), min_samples (Minimum samples to use to get Augmented_SGP4)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: incl_coefficient (set inclination filter coefficient) (double) +- Arg 1: raan_coefficient (set RAAN filter coefficient) (double) +- Arg 2: ecc_coefficient (set eccentricity filter coefficient) (double) +- Arg 3: aop_coefficient (set argument of perigee filter coefficient) (double) +- Arg 4: time_coefficient (set time filter coefficient) (double) +- Arg 5: pos_coefficient (set position filter coefficient) (double) +- Arg 6: maximum_position_error (maximum position error for Augmented_SGP4 to continue working) (double) +- Arg 7: augmented_sgp4_filter (The type of filter being used (enum)) +- Arg 8: xp_coefficient (polar coefficient xdouble; p) (double) +- Arg 9: yp_coefficient (polar coefficient ydouble; p) (double) +- Arg 10: gps_roll_over (GPS roll over number) +- Arg 11: position_sd (maximum position standard deviation for Augmented_SGP4 to continue working) (double) +- Arg 12: velocity_sd (maximum velocity standard deviation for Augmented_SGP4 to continue working) (double) +- Arg 13: min_satellites (Minimum satellites required for Augmented_SGP4 to continue working) +- Arg 14: time_gain (time offset compensation gain) (double) +- Arg 15: max_lag (maximum lagged timestamp measurements to incorporate) (double) +- Arg 16: min_samples (Minimum samples to use to get Augmented_SGP4) +@return 0 on success, >0 on error" +adcs_get_augmented_sgp4_params,TCMDEXEC_adcs_get_augmented_sgp4_params,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_tracking_controller_target_reference,TCMDEXEC_adcs_set_tracking_controller_target_reference,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"longitude (double), latitude (double), altitude (double)","@brief Telecommand: Set the ADCS tracking controller target reference (location on Earth to point towards) +@param args_str +- Arg 0: longitude (double) +- Arg 1: latitude (double) +- Arg 2: altitude (double) +@return 0 on success, >0 on error" +adcs_get_tracking_controller_target_reference,TCMDEXEC_adcs_get_tracking_controller_target_reference,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_rate_gyro_config,TCMDEXEC_adcs_set_rate_gyro_config,7,TCMD_READINESS_LEVEL_FOR_OPERATION,"gyro1 (Axis for Gyro #1; enum, options are pos/neg x, pos/neg y, pos/neg z), gyro2 (Axis for Gyro #2; enum, options are pos/neg x, pos/neg y, pos/neg z), gyro3 (Axis for Gyro #3; enum, options are pos/neg x, pos/neg y, pos/neg z), x_rate_offset (x-rate sensor offset) (double), y_rate_offset (y-rate sensor offset) (double), z_rate_offset (z-rate sensor offset) (double), rate_sensor_mult (multiplier of rate sensor measurement)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: gyro1 (Axis for Gyro #1; enum, options are pos/neg x, pos/neg y, pos/neg z) +- Arg 1: gyro2 (Axis for Gyro #2; enum, options are pos/neg x, pos/neg y, pos/neg z) +- Arg 2: gyro3 (Axis for Gyro #3; enum, options are pos/neg x, pos/neg y, pos/neg z) +- Arg 3: x_rate_offset (x-rate sensor offset) (double) +- Arg 4: y_rate_offset (y-rate sensor offset) (double) +- Arg 5: z_rate_offset (z-rate sensor offset) (double) +- Arg 6: rate_sensor_mult (multiplier of rate sensor measurement) +@return 0 on success, >0 on error" +adcs_get_rate_gyro_config,TCMDEXEC_adcs_get_rate_gyro_config,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_estimated_attitude_angles,TCMDEXEC_adcs_estimated_attitude_angles,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_magnetic_field_vector,TCMDEXEC_adcs_magnetic_field_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_fine_sun_vector,TCMDEXEC_adcs_fine_sun_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_nadir_vector,TCMDEXEC_adcs_nadir_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_commanded_wheel_speed,TCMDEXEC_adcs_commanded_wheel_speed,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_igrf_magnetic_field_vector,TCMDEXEC_adcs_igrf_magnetic_field_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_quaternion_error_vector,TCMDEXEC_adcs_quaternion_error_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_estimated_gyro_bias,TCMDEXEC_adcs_estimated_gyro_bias,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_estimation_innovation_vector,TCMDEXEC_adcs_estimation_innovation_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_cam1_sensor,TCMDEXEC_adcs_raw_cam1_sensor,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_cam2_sensor,TCMDEXEC_adcs_raw_cam2_sensor,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_coarse_sun_sensor_1_to_6,TCMDEXEC_adcs_raw_coarse_sun_sensor_1_to_6,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_coarse_sun_sensor_7_to_10,TCMDEXEC_adcs_raw_coarse_sun_sensor_7_to_10,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_cubecontrol_current,TCMDEXEC_adcs_cubecontrol_current,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_gps_status,TCMDEXEC_adcs_raw_gps_status,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_gps_time,TCMDEXEC_adcs_raw_gps_time,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_gps_x,TCMDEXEC_adcs_raw_gps_x,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_gps_y,TCMDEXEC_adcs_raw_gps_y,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_gps_z,TCMDEXEC_adcs_raw_gps_z,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_measurements,TCMDEXEC_adcs_measurements,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_generic_command,TCMDEXEC_adcs_generic_command,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"ID of the telecommand to send (see Firmware Reference Manual), hex array of data bytes of length up to 504 (longest command is almost ADCS Configuration (ID 26/204) at 504 bytes)","@brief Telecommand: execute a generic command on the ADCS +@param args_str +- Arg 0: ID of the telecommand to send (see Firmware Reference Manual) +- Arg 1: hex array of data bytes of length up to 504 (longest command is almost ADCS Configuration (ID 26/204) at 504 bytes) +@return 0 on success, >0 on error" +adcs_generic_telemetry_request,TCMDEXEC_adcs_generic_telemetry_request,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"ID of the telemetry request to send (see Firmware Reference Manual), number of data bytes expected to receive from the ADCS (also see Firmware Reference Manual, up to 504)","@brief Telecommand: obtain generic telemetry from the ADCS +@param args_str +- Arg 0: ID of the telemetry request to send (see Firmware Reference Manual) +- Arg 1: number of data bytes expected to receive from the ADCS (also see Firmware Reference Manual, up to 504) +@return 0 on success, >0 on error" +log_set_sink_enabled_state,TCMDEXEC_log_set_sink_enabled_state,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Sink enum value, Enabled? 0: disable sink, 1: enable sink","@brief Telecommand: Set a LOG sink's enabled state +@param args_str +- Arg 0: Sink enum value +- Arg 1: Enabled? 0: disable sink, 1: enable sink +@details FrontierSat LOG sinks +LOG_SINK_UHF_RADIO = 1 +LOG_SINK_FILE = 2 +LOG_SINK_UMBILICAL_UART = 4" +log_set_system_file_logging_enabled_state,TCMDEXEC_log_set_system_file_logging_enabled_state,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Subsystem enum value, Enabled? 0: disable file logging, 1: enable file logging","@brief Telecommand: Set a LOG subsystem's file logging enabled state +@param args_str +- Arg 0: Subsystem enum value +- Arg 1: Enabled? 0: disable file logging, 1: enable file logging +@details FrontierSat LOG sinks +LOG_SYSTEM_OBC = 1 +LOG_SYSTEM_UHF_RADIO = 2 +LOG_SYSTEM_UMBILICAL_UART = 4 +LOG_SYSTEM_GPS = 8 +LOG_SYSTEM_MPI = 16 +LOG_SYSTEM_EPS = 32 +LOG_SYSTEM_BOOM = 64 +LOG_SYSTEM_ADCS = 128 +LOG_SYSTEM_LFS = 256 +LOG_SYSTEM_FLASH = 512 +LOG_SYSTEM_ANTENNA_DEPLOY = 1024 +LOG_SYSTEM_LOG = 2048 +LOG_SYSTEM_TELECOMMAND = 4096 +LOG_SYSTEM_UNIT_TEST = 8192" +log_report_sink_enabled_state,TCMDEXEC_log_report_sink_enabled_state,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Sink enum,"@brief Telecommand: Report a LOG sink's enabled state +@param args_str +- Arg 0: Sink enum" +log_report_all_sink_enabled_states,TCMDEXEC_log_report_all_sink_enabled_states,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,@brief Telecommand: Report all LOG sink enable states +log_report_system_file_logging_state,TCMDEXEC_log_report_system_file_logging_state,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Subsystem enum,"@brief Telecommand: Report LOG subsystem's file logging state (and show +logging filename) +@param args_str +- Arg 0: Subsystem enum" +log_report_all_system_file_logging_states,TCMDEXEC_log_report_all_system_file_logging_states,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,@brief Telecommand: Report all LOG subsystem file logging states +log_set_sink_debugging_messages_state,TCMDEXEC_log_set_sink_debugging_messages_state,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Sink enum, State 0: disable debug messages, 1: enable debug messages","@brief Telecommand: Enable or disable debugging messages for LOG sink +@param args_str +- Arg 0: Sink enum +- Arg 1: State 0: disable debug messages, 1: enable debug messages" +log_set_system_debugging_messages_state,TCMDEXEC_log_set_system_debugging_messages_state,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Subsystem enum, State 0: disable debug messages, 1: enable debug messages","@brief Telecommand: Enable or disable debugging messages for LOG subsystem +@param args_str +- Arg 0: Subsystem enum +- Arg 1: State 0: disable debug messages, 1: enable debug messages" +log_report_latest_message_from_memory,TCMDEXEC_log_report_latest_message_from_memory,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Report the latest log message to the incoming +telecommand channel" +log_report_n_latest_messages_from_memory,TCMDEXEC_log_report_n_latest_messages_from_memory,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Number of latest log messages to report,"@brief Telecommand: Report the N latest log messages to the incoming +telecommand channel +@param args_str +- Arg 0: Number of latest log messages to report" +freetos_list_tasks_jsonl,TCMDEXEC_freetos_list_tasks_jsonl,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand that return metadata regarding Tasks from FreeRTOS +@param args_str No arguments expected +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 if successful, >0 if an error occurred (but hello_world can't return an error)" +freertos_demo_stack_usage,TCMDEXEC_freertos_demo_stack_usage,1,TCMD_READINESS_LEVEL_FLIGHT_TESTING,num_bytes (uint64_t) - The number of elements to allocate in the VLA. <=1_000_000.,"@brief Demo using stack memory by allocating a Variable-Length Array (VLA) on the stack. +@param args_str +- Arg 0: num_bytes (uint64_t) - The number of elements to allocate in the VLA. <=1_000_000. +@return 0 on success, >0 on error" +eps_watchdog,TCMDEXEC_eps_watchdog,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Triggers/services the EPS watchdog. No args. +@param args_str No arguments. +@return 0 on success, 1 on failure." +eps_system_reset,TCMDEXEC_eps_system_reset,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Resets the EPS system. +@param args_str No arguments. +@return 0 on success, 1 on failure." +eps_no_operation,TCMDEXEC_eps_no_operation,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Calls the EPS no-op (no operation) command. Likely not useful. +@param args_str No arguments. +@return 0 on success, 1 on failure." +eps_cancel_operation,TCMDEXEC_eps_cancel_operation,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Calls the EPS cancel operation command. Likely not useful. +@param args_str No arguments. +@return 0 on success, 1 on failure. +@note This command likely isn't useful, as telecommands cannot be trigger simultaneously, and +thus another command to the EPS cannot really be cancelled from here." +eps_switch_to_mode,TCMDEXEC_eps_switch_to_mode,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"New mode to switch to. Either ""nominal"" or ""safety"".","@brief Switches the EPS to ""nominal"" or ""safety"" mode. +@param args_str +- Arg 0: New mode to switch to. Either ""nominal"" or ""safety"". +@return 0 on success, 1 on failure. +@note See EPS Software ICD, Page 12, Section 3 (Functional Description) for state/mode definitions." +eps_set_channel_enabled,TCMDEXEC_eps_set_channel_enabled,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"The channel name or number (string)., 1 to enable (power on), 0 to disable (power off)","@brief Sets the EPS channel to be enabled (on) or disabled (off). +@param args_str +- Arg 0: The channel name or number (string). +- Arg 1: 1 to enable (power on), 0 to disable (power off) +@return 0 on success, >0 on failure +@note Valid string values for Arg 0: ""vbatt_stack"", ""stack_5v"", ""stack_3v3"", ""camera"", +""uhf_antenna_deploy"", ""lora_module"", ""mpi"", ""boom""." +eps_get_system_status_json,TCMDEXEC_eps_get_system_status_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS system status, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pdu_overcurrent_fault_state_json,TCMDEXEC_eps_get_pdu_overcurrent_fault_state_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PDU (Power Distribution Unit) overcurrent fault status, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pbu_abf_placed_state_json,TCMDEXEC_eps_get_pbu_abf_placed_state_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PBU (Power Battery Unit) ABF placed status, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pdu_housekeeping_data_eng_json,TCMDEXEC_eps_get_pdu_housekeeping_data_eng_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PDU (Power Distribution Unit) housekeeping data, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pdu_housekeeping_data_run_avg_json,TCMDEXEC_eps_get_pdu_housekeeping_data_run_avg_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PDU (Power Distribution Unit) housekeeping data (running average), and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pbu_housekeeping_data_eng_json,TCMDEXEC_eps_get_pbu_housekeeping_data_eng_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PBU (Power Battery Unit) housekeeping data, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pbu_housekeeping_data_run_avg_json,TCMDEXEC_eps_get_pbu_housekeeping_data_run_avg_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PBU (Power Battery Unit) housekeeping data (running average), and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pcu_housekeeping_data_eng_json,TCMDEXEC_eps_get_pcu_housekeeping_data_eng_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PCU (Power Conditioning Unit, solar panel MPPT) housekeeping data, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pcu_housekeeping_data_run_avg_json,TCMDEXEC_eps_get_pcu_housekeeping_data_run_avg_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PCU (Power Conditioning Unit, solar panel MPPT) housekeeping data (running average), and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_piu_housekeeping_data_eng_json,TCMDEXEC_eps_get_piu_housekeeping_data_eng_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Gets the EPS PIU (Power Integrated Unit, info about all systems) housekeeping data, and returns it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_piu_housekeeping_data_run_avg_json,TCMDEXEC_eps_get_piu_housekeeping_data_run_avg_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PIU (Power Integrated Unit, info about all systems) housekeeping data (running average), and display it as a JSON string. +@return 0 on success, >0 on failure." +agenda_delete_all,TCMDEXEC_agenda_delete_all,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Delete all agendas +@param args_str No arguments needed +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 on success" +agenda_delete_by_tssent,TCMDEXEC_agenda_delete_by_tssent,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Timestamp sent (uint64_t) - The tssent timestamp of the agenda entry to delete.,"@brief Telecommand: Delete agenda entry by tssent timestamp +@param args_str +- Arg 0: Timestamp sent (uint64_t) - The tssent timestamp of the agenda entry to delete. +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 on success, >0 on error" +agenda_fetch_jsonl,TCMDEXEC_agenda_fetch_jsonl,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Fetch all pending agenda items, and log them each as JSONL +@param args_str No arguments needed +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 on success, 1 if there are no active agendas." +agenda_delete_by_name,TCMDEXEC_agenda_delete_by_name,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"telecommand name (string) - The name of the telecommand function in the agenda to delete. (e.g, hello_world)","@brief Telecommand: Delete all agenda entries with a telecommand name +@param args_str +- Arg 0: telecommand name (string) - The name of the telecommand function in the agenda to delete. (e.g, hello_world) +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 on success, > 0 on error" +mpi_send_command_hex,TCMDEXEC_mpi_send_command_hex,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"Hex-encoded string representing the configuration command + arguments (IF ANY) to send to the MPI, INCLUDING 'TC' (0x54 0x43)","@brief Send a configuration command & params (IF ANY) to the MPI encoded in hex +@param args_str +- Arg 0: Hex-encoded string representing the configuration command + arguments (IF ANY) to send to the MPI, INCLUDING 'TC' (0x54 0x43) +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0: Success, 1: Invalid Input, 2: Failed UART transmission, 3: Failed UART reception, +4: MPI timeout before sending 1 byte, 5: MPI failed to execute CMD" +mpi_demo_tx_to_mpi,TCMDEXEC_mpi_demo_tx_to_mpi,0,TCMD_READINESS_LEVEL_GROUND_USAGE_ONLY,,"@brief Sends a message over UART to the MPI. +@param args_str No args. +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0: Success, >0: Failure" +stm32_internal_flash_read,TCMDEXEC_stm32_internal_flash_read,2,TCMD_READINESS_LEVEL_GROUND_USAGE_ONLY,"The address to start reading from, The number of bytes to read as a uint64_t","@brief Read data from the internal flash bank +@param args_str +- Arg 0: The address to start reading from +- Arg 1: The number of bytes to read as a uint64_t +@return 0 on success, > 0 on error" +stm32_internal_flash_write,TCMDEXEC_stm32_internal_flash_write,2,TCMD_READINESS_LEVEL_GROUND_USAGE_ONLY,"The data in hex format to write, The offset to start writing from","@brief Write data to the internal flash bank starting from address 0x08100000 +@param args_str +- Arg 0: The data in hex format to write +- Arg 1: The offset to start writing from +@note This telecommand is only for testing purposes, it is purposfully not fully fleshed out +as there is no intention on using this. Update as needed +@return 0 on success, > 0 on error" +stm32_internal_flash_erase,TCMDEXEC_stm32_internal_flash_erase,2,TCMD_READINESS_LEVEL_GROUND_USAGE_ONLY,"The starting page to erase as a uint64_t, The number of pages to erase as a uint64_t","@brief Erase a range of pages in the internal flash bank. +Only Erases for Flash Bank 2. +@param args_str +- Arg 0: The starting page to erase as a uint64_t +- Arg 1: The number of pages to erase as a uint64_t +@return 0 on success, > 0 on error" +ant_reset,TCMDEXEC_ant_reset,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B""","@brief Resets the specified antenna deployment system's microcontroller +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +@return 0 on success, > 0 otherwise" +ant_arm_antenna_system,TCMDEXEC_ant_arm_antenna_system,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B""","@brief Telecommand: Arm the antenna deploy system +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +@return 0 on success, >0 on error" +ant_disarm_antenna_system,TCMDEXEC_ant_disarm_antenna_system,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to disarm, and which i2c bus to use","@brief Disarms the specified antenna deploy system's mcu +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to disarm, and which i2c bus to use +@return 0 on success, 0 > otherwise" +ant_deploy_antenna,TCMDEXEC_ant_deploy_antenna,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Either ""A"" or ""B"", antenna number. between 1-4, Activation time in seconds","@brief Telecommand: Initiates deployment of the selected antenna +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Either ""A"" or ""B"" +- Arg 1: antenna number. between 1-4 +- Arg 2: Activation time in seconds +@return 0 on success, >0 on error" +ant_start_automated_antenna_deployment,TCMDEXEC_ant_start_automated_antenna_deployment,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"", Activation time in seconds","@brief begins deployment of all antennas, one by one. +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +- Arg 1: Activation time in seconds +@return returns 0 on success, > 0 otherwise" +ant_deploy_antenna_with_override,TCMDEXEC_ant_deploy_antenna_with_override,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"", antenna number. between 1-4, Activation time in seconds","@brief Telecommand: Initiates deployment of the selected antenna, ignoring whether the antennas current status is deployed. +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +- Arg 1: antenna number. between 1-4 +- Arg 2: Activation time in seconds +@return 0 on successful communication, >0 on communications error" +ant_cancel_deployment_system_activation,TCMDEXEC_ant_cancel_deployment_system_activation,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B""","@brief Cancels any active attempts to deploy an antenna +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +@return 0 on successful communication, > 0 on communications error" +ant_measure_temp,TCMDEXEC_ant_measure_temp,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B""","@brief Telecommand: Measures the temperature of the antenna controller in centi-degrees celsius +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +@return 0 on success, >0 on error" +ant_report_deployment_status,TCMDEXEC_ant_report_deployment_status,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B""","@brief Prints the deployment status of all antennas +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +@return 0 on successful communication, > 0 on communications error" +ant_report_antenna_deployment_activation_count,TCMDEXEC_ant_report_antenna_deployment_activation_count,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"", the antenna to check, between 1-4","@brief Prints the number of times deployment was attempted on the selected antenna +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +- Arg 1: the antenna to check, between 1-4 +@return 0 on successful communication, > 0 on communications error" +ant_report_antenna_deployment_activation_time,TCMDEXEC_ant_report_antenna_deployment_activation_time,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"", the antenna to check, between 1-4","@brief Prints amount of time the deployment system has been active for for the selected antenna +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +- Arg 1: the antenna to check, between 1-4 +@return 0 on successful communication, > 0 on communications error" +obc_read_temperature,TCMDEXEC_obc_read_temperature,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Precision we want the temperature to be (9-12 bits).,"@brief Reads the temperature from the STDS75DS2F and stores it in the provided variable temperature. +Temperature range is -55 to 125 degrees celsius with +/- 3 degrees celsius accuracy over the whole range. +@param args_str +- Arg 0: Precision we want the temperature to be (9-12 bits). +@return 0 if successful, 1 if error." +comms_dipole_switch_set_state,TCMDEXEC_comms_dipole_switch_set_state,1,TCMD_READINESS_LEVEL_FLIGHT_TESTING,"The state of the dipole switch. Either ""1"" or ""2"".","@brief Sets the state of the dipole switch on the OBC to either Antenna 1 or Antenna 2. +@param args_str +- Arg 0: The state of the dipole switch. Either ""1"" or ""2"". +@return" diff --git a/spreadsheets/telecommands_2024-12-02_11-25.csv b/spreadsheets/telecommands_2024-12-02_11-25.csv new file mode 100644 index 0000000..38877e2 --- /dev/null +++ b/spreadsheets/telecommands_2024-12-02_11-25.csv @@ -0,0 +1,694 @@ +Name,Function,Number of Args,Readiness Level,Arguments,Docstring +hello_world,TCMDEXEC_hello_world,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief A simple telecommand that responds with ""Hello, world!"" +@param args_str No arguments expected +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 if successful, >0 if an error occurred (but hello_world can't return an error)" +heartbeat_off,TCMDEXEC_heartbeat_off,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +heartbeat_on,TCMDEXEC_heartbeat_on,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +core_system_stats,TCMDEXEC_core_system_stats,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +get_system_time,TCMDEXEC_get_system_time,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +set_system_time,TCMDEXEC_set_system_time,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Unix epoch time in milliseconds (uint64_t),"@brief Set the system time to the provided Unix epoch time in milliseconds +@param args_str +- Arg 0: Unix epoch time in milliseconds (uint64_t) +@return 0 if successful, 1 if error" +correct_system_time,TCMDEXEC_correct_system_time,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"Correction time in milliseconds (int64_t). Positive = forward in time, negative = backward in time.","@brief Adjust the system time with a signed int +@param args_str +- Arg 0: Correction time in milliseconds (int64_t). Positive = forward in time, negative = backward in time. +@return 0 if successful, 1 if error" +set_eps_time_based_on_obc_time,TCMDEXEC_set_eps_time_based_on_obc_time,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Sync's eps time to obc time (+/- 1 second) +@return 0 on success, >0 on failure." +set_obc_time_based_on_eps_time,TCMDEXEC_set_obc_time_based_on_eps_time,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Sync's obc time to eps time (+/- 1 second) +@return 0 on success, >0 on failure." +available_telecommands,TCMDEXEC_available_telecommands,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +reboot,TCMDEXEC_reboot,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +scan_i2c_bus,TCMDEXEC_scan_i2c_bus,1,TCMD_READINESS_LEVEL_FOR_OPERATION,I2C bus to scan (1-4),"@brief Scans the I2C bus for devices. Prints out the addresses of devices found. +@param args_str +- Arg 0: I2C bus to scan (1-4) +@return 0 if successful, 1 if error." +echo_back_args,TCMDEXEC_echo_back_args,1,TCMD_READINESS_LEVEL_FOR_OPERATION,The string to echo back.,"@brief A demo telecommand that echoes back the argument it received. +@param args_str +- Arg 0: The string to echo back." +echo_back_uint32_args,TCMDEXEC_echo_back_uint32_args,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"The first integer to echo back., The second integer to echo back., The third integer to echo back.","@brief A demo telecommand that echoes back each integer argument it received. +@param args_str 3 integer arguments to echo back. +- Arg 0: The first integer to echo back. +- Arg 1: The second integer to echo back. +- Arg 2: The third integer to echo back. +@return 0 if all ints are parsed successfully, otherwise the error code of the first failed parse." +run_all_unit_tests,TCMDEXEC_run_all_unit_tests,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +demo_blocking_delay,TCMDEXEC_demo_blocking_delay,1,TCMD_READINESS_LEVEL_FLIGHT_TESTING,delay_ms (uint64_t) - The number of milliseconds to delay for. <=30_000ms.,"@brief Delay for a specified number of milliseconds, for testing purposes. +@param args_str 1 argument: delay_ms (uint64_t) +- Arg 0: delay_ms (uint64_t) - The number of milliseconds to delay for. <=30_000ms. +@return 0 on success, 1 on error" +config_set_int_var,TCMDEXEC_config_set_int_var,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"variable name, new value","@brief Set an integer configuration variable +@param args_str +- Arg 0: variable name +- Arg 1: new value +@param response_output_buf Buffer to write the response to +@param response_output_buf_len Max length of the buffer +@return 0 if successful, >0 if an error occurred" +config_set_str_var,TCMDEXEC_config_set_str_var,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"variable name, new value","@brief Set a string configuration variable +@param args_str +- Arg 0: variable name +- Arg 1: new value +@return 0 if successful, >0 if an error occurred" +config_get_int_var_json,TCMDEXEC_config_get_int_var_json,1,TCMD_READINESS_LEVEL_FOR_OPERATION,variable name,"@brief Get an integer configuration variable +@param args_str +- Arg 0: variable name +@return 0 if successful, >0 if an error occurred" +config_get_str_var_json,TCMDEXEC_config_get_str_var_json,1,TCMD_READINESS_LEVEL_FOR_OPERATION,variable name,"@brief Get a string configuration variable +@param args_str +- Arg 0: variable name +@return 0 if successful, >0 if an error occurred" +config_get_all_vars_jsonl,TCMDEXEC_config_get_all_vars_jsonl,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get all configuration variables, as JSON. One variable per line. +@param args_str No arguments. +@return 0 if successful, >0 if an error occurred" +flash_activate_each_cs,TCMDEXEC_flash_activate_each_cs,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Read bytes as hex from a flash address +@param args_str No args. +@return 0 always" +flash_each_is_reachable,TCMDEXEC_flash_each_is_reachable,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Read bytes as hex from a flash address +@param args_str No args. +@return 0 always" +flash_read_hex,TCMDEXEC_flash_read_hex,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"Chip Number (CS number) as uint, Page number as uint, Number of bytes to read as uint","@brief Telecommand: Read bytes as hex from a page number +@param args_str +- Arg 0: Chip Number (CS number) as uint +- Arg 1: Page number as uint +- Arg 2: Number of bytes to read as uint +@return 0 on success, >0 on error" +flash_write_hex,TCMDEXEC_flash_write_hex,3,TCMD_READINESS_LEVEL_FLIGHT_TESTING,"Chip Number (CS number) as uint, Page number as uint, Hex string of bytes to write (any case, allows space/underscore separators)","@brief Telecommand: Write a hex string of bytes to a page number +@param args_str +- Arg 0: Chip Number (CS number) as uint +- Arg 1: Page number as uint +- Arg 2: Hex string of bytes to write (any case, allows space/underscore separators) +@return 0 on success, >0 on error" +flash_erase,TCMDEXEC_flash_erase,2,TCMD_READINESS_LEVEL_FLIGHT_TESTING,"Chip Number (CS number) as uint, Page number as uint","@brief Telecommand: Erase a block of flash memory containing the given page number. +@param args_str +- Arg 0: Chip Number (CS number) as uint +- Arg 1: Page number as uint +@return 0 on success, >0 on error" +flash_benchmark_erase_write_read,TCMDEXEC_flash_benchmark_erase_write_read,3,TCMD_READINESS_LEVEL_FLIGHT_TESTING,"Chip Number (CS number) as uint, Test Data Address as uint, Test Data Length as uint","@brief Telecommand: Benchmarks the erase/write/read operations on the flash memory module. +@param args_str +- Arg 0: Chip Number (CS number) as uint +- Arg 1: Test Data Address as uint +- Arg 2: Test Data Length as uint +@return 0 on success, >0 on error" +flash_reset,TCMDEXEC_flash_reset,1,TCMD_READINESS_LEVEL_IN_PROGRESS,Chip Number (CS number) as uint,"@brief Telecommand: Reset the flash memory module. +@param args_str +- Arg 0: Chip Number (CS number) as uint +@return 0 on success, >0 on error" +flash_read_status_register,TCMDEXEC_flash_read_status_register,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Chip Number (CS number) as uint,"@brief Telecommand: Read and print Status Register value as hex from the flash memory module. +@param args_str +- Arg 0: Chip Number (CS number) as uint +@return 0 on success, >0 on error" +flash_write_enable,TCMDEXEC_flash_write_enable,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Chip Number (CS number) as uint,"@brief Telecommand: Set the write enable lath to high on the flash memory module +@param args_str +- Arg 0: Chip Number (CS number) as uint +@return 0 on success, >0 on error" +fs_format_storage,TCMDEXEC_fs_format_storage,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +fs_mount,TCMDEXEC_fs_mount,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +fs_unmount,TCMDEXEC_fs_unmount,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +fs_write_file,TCMDEXEC_fs_write_file,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"File path as string, String to write to file","@brief Telecommand: Write data to a file in LittleFS +@param args_str +- Arg 0: File path as string +- Arg 1: String to write to file" +fs_read_file_hex,TCMDEXEC_fs_read_file_hex,1,TCMD_READINESS_LEVEL_FOR_OPERATION,File path as string,"@brief Reads a file from LittleFS, and responds with its contents as 2-digit hex bytes. +@param args_str +- Arg 0: File path as string +@return 0 on success, >0 on error" +fs_read_text_file,TCMDEXEC_fs_read_text_file,1,TCMD_READINESS_LEVEL_FOR_OPERATION,File path as string,"@brief Reads a file from LittleFS, and responds with its contents as 2-digit hex bytes. +@param args_str +- Arg 0: File path as string +@return 0 on success, >0 on error" +fs_demo_write_then_read,TCMDEXEC_fs_demo_write_then_read,0,TCMD_READINESS_LEVEL_FOR_OPERATION,, +fs_benchmark_write_read,TCMDEXEC_fs_benchmark_write_read,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Write chunk size (bytes), Write chunk count","@brief Telecommand: Benchmark LittleFS write and read operations +@param args_str +- Arg 0: Write chunk size (bytes) +- Arg 1: Write chunk count +@return 0 on success, 1 if error parsing args, 2 if benchmark failed +@note The maximum write chunk size is 127 bytes, apparently; need to investigate why so small." +adcs_ack,TCMDEXEC_adcs_ack,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_wheel_speed,TCMDEXEC_adcs_set_wheel_speed,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"wheel speed x value, wheel speed y value, wheel speed z value","@brief Telecommand: Set the wheel speed of the ADCS +@param args_str +- Arg 0: wheel speed x value +- Arg 1: wheel speed y value +- Arg 2: wheel speed z value +@return 0 on success, >0 on error" +adcs_reset,TCMDEXEC_adcs_reset,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_identification,TCMDEXEC_adcs_identification,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_program_status,TCMDEXEC_adcs_program_status,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_communication_status,TCMDEXEC_adcs_communication_status,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_deploy_magnetometer,TCMDEXEC_adcs_deploy_magnetometer,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_run_mode,TCMDEXEC_adcs_set_run_mode,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"run mode to set; can be can be off (0), enabled (1), triggered (2), or simulation (3)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: run mode to set; can be can be off (0), enabled (1), triggered (2), or simulation (3) +@return 0 on success, >0 on error" +adcs_clear_errors,TCMDEXEC_adcs_clear_errors,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_attitude_control_mode,TCMDEXEC_adcs_attitude_control_mode,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Control mode to set (Table 77 in Firmware Manual), Timeout to set control mode","@brief Telecommand: Set the attitude control mode of the ADCS; needs Power Control to be set before working +@param args_str +- Arg 0: Control mode to set (Table 77 in Firmware Manual) +- Arg 1: Timeout to set control mode +@return 0 on success, >0 on error" +adcs_attitude_estimation_mode,TCMDEXEC_adcs_attitude_estimation_mode,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_run_once,TCMDEXEC_adcs_run_once,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: If ADCS run mode is Triggered, run the ADCS sensor loop +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_magnetometer_mode,TCMDEXEC_adcs_set_magnetometer_mode,1,TCMD_READINESS_LEVEL_FOR_OPERATION,magnetometer mode to set,"@brief Telecommand: Set the magnetometer mode of the ADCS +@param args_str +- Arg 0: magnetometer mode to set +@return 0 on success, >0 on error" +adcs_set_magnetorquer_output,TCMDEXEC_adcs_set_magnetorquer_output,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"magnetorquer x duty cycle (double), magnetorquer y duty cycle (double), magnetorquer z duty cycle (double)","@brief Telecommand: Set the magnetorquer output values +@param args_str +- Arg 0: magnetorquer x duty cycle (double) +- Arg 1: magnetorquer y duty cycle (double) +- Arg 2: magnetorquer z duty cycle (double) +@return 0 on success, >0 on error" +adcs_save_config,TCMDEXEC_adcs_save_config,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_estimate_angular_rates,TCMDEXEC_adcs_estimate_angular_rates,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_llh_position,TCMDEXEC_adcs_get_llh_position,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_power_control,TCMDEXEC_adcs_get_power_control,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_power_control,TCMDEXEC_adcs_set_power_control,10,TCMD_READINESS_LEVEL_FOR_OPERATION,"Power control mode for cube control signal, Power control mode for cube control motor, Power control mode for cube sense 1, Power control mode for cube sense 2, Power control mode for cube star, Power control mode for cube wheel 1, Power control mode for cube wheel 2, Power control mode for cube wheel 3, Power control mode for motor, Power control mode for gps","@brief Telecommand: Set the power control mode of each component of the ADCS; for each, 0 turns the component off, 1 turns it on, and 2 keeps it the same as previously. +@param args_str +- Arg 0: Power control mode for cube control signal +- Arg 1: Power control mode for cube control motor +- Arg 2: Power control mode for cube sense 1 +- Arg 3: Power control mode for cube sense 2 +- Arg 4: Power control mode for cube star +- Arg 5: Power control mode for cube wheel 1 +- Arg 6: Power control mode for cube wheel 2 +- Arg 7: Power control mode for cube wheel 3 +- Arg 8: Power control mode for motor +- Arg 9: Power control mode for gps +@return 0 on success, >0 on error" +adcs_set_magnetometer_config,TCMDEXEC_adcs_set_magnetometer_config,15,TCMD_READINESS_LEVEL_FOR_OPERATION,"Mounting transform alpha angle [deg] (double), Mounting transform beta angle [deg] (double), Mounting transform gamma angle [deg] (double), Channel 1 offset value (double), Channel 2 offset value (double), Channel 3 offset value (double), Value (1, 1) of the magnetometer sensitivity matrix (double), Value (2, 2) of the magnetometer sensitivity matrix (double), Value (3, 3) of the magnetometer sensitivity matrix (double), Value (1, 2) of the magnetometer sensitivity matrix (double), Value (1, 3) of the magnetometer sensitivity matrix (double), Value (2, 1) of the magnetometer sensitivity matrix (double), Value (2, 3) of the magnetometer sensitivity matrix (double), Value (3, 1) of the magnetometer sensitivity matrix (double), Value (3, 2) of the magnetometer sensitivity matrix (double)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: Mounting transform alpha angle [deg] (double) +- Arg 1: Mounting transform beta angle [deg] (double) +- Arg 2: Mounting transform gamma angle [deg] (double) +- Arg 3: Channel 1 offset value (double) +- Arg 4: Channel 2 offset value (double) +- Arg 5: Channel 3 offset value (double) +- Arg 6: Value (1, 1) of the magnetometer sensitivity matrix (double) +- Arg 7: Value (2, 2) of the magnetometer sensitivity matrix (double) +- Arg 8: Value (3, 3) of the magnetometer sensitivity matrix (double) +- Arg 9: Value (1, 2) of the magnetometer sensitivity matrix (double) +- Arg 10: Value (1, 3) of the magnetometer sensitivity matrix (double) +- Arg 11: Value (2, 1) of the magnetometer sensitivity matrix (double) +- Arg 12: Value (2, 3) of the magnetometer sensitivity matrix (double) +- Arg 13: Value (3, 1) of the magnetometer sensitivity matrix (double) +- Arg 14: Value (3, 2) of the magnetometer sensitivity matrix (double) +@return 0 on success, >0 on error" +adcs_bootloader_clear_errors,TCMDEXEC_adcs_bootloader_clear_errors,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_unix_time_save_mode,TCMDEXEC_adcs_set_unix_time_save_mode,4,TCMD_READINESS_LEVEL_FOR_OPERATION,"whether to save the current Unix time immediately (bool passed as int; 1 = save immediately, 0 = don't save immediately), whether to save the current Unix time whenever a command is used to update it (bool passed as int; 1 = save on command, 0 = don't), whether to save the current Unix time periodically (bool passed as int; 1 = save periodically, 0 = don't), the period of saving the current Unix time","@brief Telecommand: Choose the circumstances to save the current Unix time +@param args_str +- Arg 0: whether to save the current Unix time immediately (bool passed as int; 1 = save immediately, 0 = don't save immediately) +- Arg 1: whether to save the current Unix time whenever a command is used to update it (bool passed as int; 1 = save on command, 0 = don't) +- Arg 2: whether to save the current Unix time periodically (bool passed as int; 1 = save periodically, 0 = don't) +- Arg 3: the period of saving the current Unix time +@return 0 on success, >0 on error" +adcs_get_unix_time_save_mode,TCMDEXEC_adcs_get_unix_time_save_mode,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_sgp4_orbit_params,TCMDEXEC_adcs_set_sgp4_orbit_params,8,TCMD_READINESS_LEVEL_FOR_OPERATION,"inclination (degrees) (double), eccentricity (dimensionless) (double), right ascension of the ascending node (degrees) (double), argument of perigee (degrees) (double), b-star drag term (dimensionless) (double), mean motion (orbits per day) (double), mean anomaly (degrees) (double), epoch (integer component is year, decimal component is day) (double)","@brief Telecommand: Set the ADCS Simplified General Perturbations (SGP4) orbit parameters +@param args_str +- Arg 0: inclination (degrees) (double) +- Arg 1: eccentricity (dimensionless) (double) +- Arg 2: right ascension of the ascending node (degrees) (double) +- Arg 3: argument of perigee (degrees) (double) +- Arg 4: b-star drag term (dimensionless) (double) +- Arg 5: mean motion (orbits per day) (double) +- Arg 6: mean anomaly (degrees) (double) +- Arg 7: epoch (integer component is year, decimal component is day) (double) +@return 0 on success, >0 on error" +adcs_get_sgp4_orbit_params,TCMDEXEC_adcs_get_sgp4_orbit_params,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_save_orbit_params,TCMDEXEC_adcs_save_orbit_params,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_rate_sensor_rates,TCMDEXEC_adcs_rate_sensor_rates,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_wheel_speed,TCMDEXEC_adcs_get_wheel_speed,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_magnetorquer_command,TCMDEXEC_adcs_get_magnetorquer_command,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_raw_magnetometer_values,TCMDEXEC_adcs_get_raw_magnetometer_values,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_estimate_fine_angular_rates,TCMDEXEC_adcs_estimate_fine_angular_rates,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_magnetometer_config,TCMDEXEC_adcs_get_magnetometer_config,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_get_commanded_attitude_angles,TCMDEXEC_adcs_get_commanded_attitude_angles,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_commanded_attitude_angles,TCMDEXEC_adcs_set_commanded_attitude_angles,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"x attitude angle (double), y attitude angle (double), z attitude angle (double)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: x attitude angle (double) +- Arg 1: y attitude angle (double) +- Arg 2: z attitude angle (double) +@return 0 on success, >0 on error" +adcs_set_estimation_params,TCMDEXEC_adcs_set_estimation_params,18,TCMD_READINESS_LEVEL_FOR_OPERATION,"magnetometer_rate_filter_system_noise (float; magnetometer rate filter system noise covariance parameter), extended_kalman_filter_system_noise (float; extended kalman filter system noise covariance parameter), coarse_sun_sensor_measurement_noise (float; CSS measurement noise covariance parameter), sun_sensor_measurement_noise (float; sun sensor measurement noise covariance parameter), nadir_sensor_measurement_noise (float; nadir sensor measurement noise covariance parameter), magnetometer_measurement_noise (float; magnetometer measurement noise covariance parameter), star_tracker_measurement_noise (float; star tracker measurement noise covariance parameter), use_sun_sensor (bool; whether or not to use the sun sensor measurement in extended_kalman_filter), use_nadir_sensor (bool; whether or not to use the nadir sensor measurement in extended_kalman_filter), use_css (bool; whether or not to use the CSS measurement in extended_kalman_filter), use_star_tracker (bool; whether or not to use the star tracker measurement in extended_kalman_filter), nadir_sensor_terminator_test (bool; select to ignore nadir sensor measurements when terminator is in FOV), automatic_magnetometer_recovery (bool; select whether automatic switch to redundant magnetometer should occur in case of failure), magnetometer_mode (enum; select magnetometer mode for estimation and control), magnetometer_selection_for_raw_magnetometer_telemetry (enum; select magnetometer mode for the second raw telemetry frame), automatic_estimation_transition_due_to_rate_sensor_errors (bool; enable/disable automatic transition from MEMS rate estimation mode to RKF in case of rate sensor error), wheel_30s_power_up_delay (bool; present in CubeSupport but not in the manual -- need to test), cam1_and_cam2_sampling_period (uint8; the manual calls it this, but CubeSupport calls it ""error counter reset period"" -- need to test)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: magnetometer_rate_filter_system_noise (float; magnetometer rate filter system noise covariance parameter) +- Arg 1: extended_kalman_filter_system_noise (float; extended kalman filter system noise covariance parameter) +- Arg 2: coarse_sun_sensor_measurement_noise (float; CSS measurement noise covariance parameter) +- Arg 3: sun_sensor_measurement_noise (float; sun sensor measurement noise covariance parameter) +- Arg 4: nadir_sensor_measurement_noise (float; nadir sensor measurement noise covariance parameter) +- Arg 5: magnetometer_measurement_noise (float; magnetometer measurement noise covariance parameter) +- Arg 6: star_tracker_measurement_noise (float; star tracker measurement noise covariance parameter) +- Arg 7: use_sun_sensor (bool; whether or not to use the sun sensor measurement in extended_kalman_filter) +- Arg 8: use_nadir_sensor (bool; whether or not to use the nadir sensor measurement in extended_kalman_filter) +- Arg 9: use_css (bool; whether or not to use the CSS measurement in extended_kalman_filter) +- Arg 10: use_star_tracker (bool; whether or not to use the star tracker measurement in extended_kalman_filter) +- Arg 11: nadir_sensor_terminator_test (bool; select to ignore nadir sensor measurements when terminator is in FOV) +- Arg 12: automatic_magnetometer_recovery (bool; select whether automatic switch to redundant magnetometer should occur in case of failure) +- Arg 13: magnetometer_mode (enum; select magnetometer mode for estimation and control) +- Arg 14: magnetometer_selection_for_raw_magnetometer_telemetry (enum; select magnetometer mode for the second raw telemetry frame) +- Arg 15: automatic_estimation_transition_due_to_rate_sensor_errors (bool; enable/disable automatic transition from MEMS rate estimation mode to RKF in case of rate sensor error) +- Arg 16: wheel_30s_power_up_delay (bool; present in CubeSupport but not in the manual -- need to test) +- Arg 17: cam1_and_cam2_sampling_period (uint8; the manual calls it this, but CubeSupport calls it ""error counter reset period"" -- need to test) +@return 0 on success, >0 on error" +adcs_get_estimation_params,TCMDEXEC_adcs_get_estimation_params,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_augmented_sgp4_params,TCMDEXEC_adcs_set_augmented_sgp4_params,17,TCMD_READINESS_LEVEL_FOR_OPERATION,"incl_coefficient (set inclination filter coefficient) (double), raan_coefficient (set RAAN filter coefficient) (double), ecc_coefficient (set eccentricity filter coefficient) (double), aop_coefficient (set argument of perigee filter coefficient) (double), time_coefficient (set time filter coefficient) (double), pos_coefficient (set position filter coefficient) (double), maximum_position_error (maximum position error for Augmented_SGP4 to continue working) (double), augmented_sgp4_filter (The type of filter being used (enum)), xp_coefficient (polar coefficient xdouble; p) (double), yp_coefficient (polar coefficient ydouble; p) (double), gps_roll_over (GPS roll over number), position_sd (maximum position standard deviation for Augmented_SGP4 to continue working) (double), velocity_sd (maximum velocity standard deviation for Augmented_SGP4 to continue working) (double), min_satellites (Minimum satellites required for Augmented_SGP4 to continue working), time_gain (time offset compensation gain) (double), max_lag (maximum lagged timestamp measurements to incorporate) (double), min_samples (Minimum samples to use to get Augmented_SGP4)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: incl_coefficient (set inclination filter coefficient) (double) +- Arg 1: raan_coefficient (set RAAN filter coefficient) (double) +- Arg 2: ecc_coefficient (set eccentricity filter coefficient) (double) +- Arg 3: aop_coefficient (set argument of perigee filter coefficient) (double) +- Arg 4: time_coefficient (set time filter coefficient) (double) +- Arg 5: pos_coefficient (set position filter coefficient) (double) +- Arg 6: maximum_position_error (maximum position error for Augmented_SGP4 to continue working) (double) +- Arg 7: augmented_sgp4_filter (The type of filter being used (enum)) +- Arg 8: xp_coefficient (polar coefficient xdouble; p) (double) +- Arg 9: yp_coefficient (polar coefficient ydouble; p) (double) +- Arg 10: gps_roll_over (GPS roll over number) +- Arg 11: position_sd (maximum position standard deviation for Augmented_SGP4 to continue working) (double) +- Arg 12: velocity_sd (maximum velocity standard deviation for Augmented_SGP4 to continue working) (double) +- Arg 13: min_satellites (Minimum satellites required for Augmented_SGP4 to continue working) +- Arg 14: time_gain (time offset compensation gain) (double) +- Arg 15: max_lag (maximum lagged timestamp measurements to incorporate) (double) +- Arg 16: min_samples (Minimum samples to use to get Augmented_SGP4) +@return 0 on success, >0 on error" +adcs_get_augmented_sgp4_params,TCMDEXEC_adcs_get_augmented_sgp4_params,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_tracking_controller_target_reference,TCMDEXEC_adcs_set_tracking_controller_target_reference,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"longitude (double), latitude (double), altitude (double)","@brief Telecommand: Set the ADCS tracking controller target reference (location on Earth to point towards) +@param args_str +- Arg 0: longitude (double) +- Arg 1: latitude (double) +- Arg 2: altitude (double) +@return 0 on success, >0 on error" +adcs_get_tracking_controller_target_reference,TCMDEXEC_adcs_get_tracking_controller_target_reference,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_set_rate_gyro_config,TCMDEXEC_adcs_set_rate_gyro_config,7,TCMD_READINESS_LEVEL_FOR_OPERATION,"gyro1 (Axis for Gyro #1; enum, options are pos/neg x, pos/neg y, pos/neg z), gyro2 (Axis for Gyro #2; enum, options are pos/neg x, pos/neg y, pos/neg z), gyro3 (Axis for Gyro #3; enum, options are pos/neg x, pos/neg y, pos/neg z), x_rate_offset (x-rate sensor offset) (double), y_rate_offset (y-rate sensor offset) (double), z_rate_offset (z-rate sensor offset) (double), rate_sensor_mult (multiplier of rate sensor measurement)","@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- Arg 0: gyro1 (Axis for Gyro #1; enum, options are pos/neg x, pos/neg y, pos/neg z) +- Arg 1: gyro2 (Axis for Gyro #2; enum, options are pos/neg x, pos/neg y, pos/neg z) +- Arg 2: gyro3 (Axis for Gyro #3; enum, options are pos/neg x, pos/neg y, pos/neg z) +- Arg 3: x_rate_offset (x-rate sensor offset) (double) +- Arg 4: y_rate_offset (y-rate sensor offset) (double) +- Arg 5: z_rate_offset (z-rate sensor offset) (double) +- Arg 6: rate_sensor_mult (multiplier of rate sensor measurement) +@return 0 on success, >0 on error" +adcs_get_rate_gyro_config,TCMDEXEC_adcs_get_rate_gyro_config,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_estimated_attitude_angles,TCMDEXEC_adcs_estimated_attitude_angles,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_magnetic_field_vector,TCMDEXEC_adcs_magnetic_field_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_fine_sun_vector,TCMDEXEC_adcs_fine_sun_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_nadir_vector,TCMDEXEC_adcs_nadir_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_commanded_wheel_speed,TCMDEXEC_adcs_commanded_wheel_speed,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_igrf_magnetic_field_vector,TCMDEXEC_adcs_igrf_magnetic_field_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_quaternion_error_vector,TCMDEXEC_adcs_quaternion_error_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_estimated_gyro_bias,TCMDEXEC_adcs_estimated_gyro_bias,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_estimation_innovation_vector,TCMDEXEC_adcs_estimation_innovation_vector,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_cam1_sensor,TCMDEXEC_adcs_raw_cam1_sensor,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_cam2_sensor,TCMDEXEC_adcs_raw_cam2_sensor,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_coarse_sun_sensor_1_to_6,TCMDEXEC_adcs_raw_coarse_sun_sensor_1_to_6,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_coarse_sun_sensor_7_to_10,TCMDEXEC_adcs_raw_coarse_sun_sensor_7_to_10,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_cubecontrol_current,TCMDEXEC_adcs_cubecontrol_current,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_gps_status,TCMDEXEC_adcs_raw_gps_status,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_gps_time,TCMDEXEC_adcs_raw_gps_time,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_gps_x,TCMDEXEC_adcs_raw_gps_x,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_gps_y,TCMDEXEC_adcs_raw_gps_y,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_raw_gps_z,TCMDEXEC_adcs_raw_gps_z,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_measurements,TCMDEXEC_adcs_measurements,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Request the given telemetry data from the ADCS +@param args_str +- No arguments for this command +@return 0 on success, >0 on error" +adcs_generic_command,TCMDEXEC_adcs_generic_command,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"ID of the telecommand to send (see Firmware Reference Manual), hex array of data bytes of length up to 504 (longest command is almost ADCS Configuration (ID 26/204) at 504 bytes)","@brief Telecommand: execute a generic command on the ADCS +@param args_str +- Arg 0: ID of the telecommand to send (see Firmware Reference Manual) +- Arg 1: hex array of data bytes of length up to 504 (longest command is almost ADCS Configuration (ID 26/204) at 504 bytes) +@return 0 on success, >0 on error" +adcs_generic_telemetry_request,TCMDEXEC_adcs_generic_telemetry_request,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"ID of the telemetry request to send (see Firmware Reference Manual), number of data bytes expected to receive from the ADCS (also see Firmware Reference Manual, up to 504)","@brief Telecommand: obtain generic telemetry from the ADCS +@param args_str +- Arg 0: ID of the telemetry request to send (see Firmware Reference Manual) +- Arg 1: number of data bytes expected to receive from the ADCS (also see Firmware Reference Manual, up to 504) +@return 0 on success, >0 on error" +log_set_sink_enabled_state,TCMDEXEC_log_set_sink_enabled_state,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Sink enum value, Enabled? 0: disable sink, 1: enable sink","@brief Telecommand: Set a LOG sink's enabled state +@param args_str +- Arg 0: Sink enum value +- Arg 1: Enabled? 0: disable sink, 1: enable sink +@details FrontierSat LOG sinks +LOG_SINK_UHF_RADIO = 1 +LOG_SINK_FILE = 2 +LOG_SINK_UMBILICAL_UART = 4" +log_set_system_file_logging_enabled_state,TCMDEXEC_log_set_system_file_logging_enabled_state,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Subsystem enum value, Enabled? 0: disable file logging, 1: enable file logging","@brief Telecommand: Set a LOG subsystem's file logging enabled state +@param args_str +- Arg 0: Subsystem enum value +- Arg 1: Enabled? 0: disable file logging, 1: enable file logging +@details FrontierSat LOG sinks +LOG_SYSTEM_OBC = 1 +LOG_SYSTEM_UHF_RADIO = 2 +LOG_SYSTEM_UMBILICAL_UART = 4 +LOG_SYSTEM_GPS = 8 +LOG_SYSTEM_MPI = 16 +LOG_SYSTEM_EPS = 32 +LOG_SYSTEM_BOOM = 64 +LOG_SYSTEM_ADCS = 128 +LOG_SYSTEM_LFS = 256 +LOG_SYSTEM_FLASH = 512 +LOG_SYSTEM_ANTENNA_DEPLOY = 1024 +LOG_SYSTEM_LOG = 2048 +LOG_SYSTEM_TELECOMMAND = 4096 +LOG_SYSTEM_UNIT_TEST = 8192" +log_report_sink_enabled_state,TCMDEXEC_log_report_sink_enabled_state,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Sink enum,"@brief Telecommand: Report a LOG sink's enabled state +@param args_str +- Arg 0: Sink enum" +log_report_all_sink_enabled_states,TCMDEXEC_log_report_all_sink_enabled_states,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,@brief Telecommand: Report all LOG sink enable states +log_report_system_file_logging_state,TCMDEXEC_log_report_system_file_logging_state,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Subsystem enum,"@brief Telecommand: Report LOG subsystem's file logging state (and show +logging filename) +@param args_str +- Arg 0: Subsystem enum" +log_report_all_system_file_logging_states,TCMDEXEC_log_report_all_system_file_logging_states,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,@brief Telecommand: Report all LOG subsystem file logging states +log_set_sink_debugging_messages_state,TCMDEXEC_log_set_sink_debugging_messages_state,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Sink enum, State 0: disable debug messages, 1: enable debug messages","@brief Telecommand: Enable or disable debugging messages for LOG sink +@param args_str +- Arg 0: Sink enum +- Arg 1: State 0: disable debug messages, 1: enable debug messages" +log_set_system_debugging_messages_state,TCMDEXEC_log_set_system_debugging_messages_state,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"Subsystem enum, State 0: disable debug messages, 1: enable debug messages","@brief Telecommand: Enable or disable debugging messages for LOG subsystem +@param args_str +- Arg 0: Subsystem enum +- Arg 1: State 0: disable debug messages, 1: enable debug messages" +log_report_latest_message_from_memory,TCMDEXEC_log_report_latest_message_from_memory,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Report the latest log message to the incoming +telecommand channel" +log_report_n_latest_messages_from_memory,TCMDEXEC_log_report_n_latest_messages_from_memory,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Number of latest log messages to report,"@brief Telecommand: Report the N latest log messages to the incoming +telecommand channel +@param args_str +- Arg 0: Number of latest log messages to report" +freetos_list_tasks_jsonl,TCMDEXEC_freetos_list_tasks_jsonl,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand that return metadata regarding Tasks from FreeRTOS +@param args_str No arguments expected +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 if successful, >0 if an error occurred (but hello_world can't return an error)" +freertos_demo_stack_usage,TCMDEXEC_freertos_demo_stack_usage,1,TCMD_READINESS_LEVEL_FLIGHT_TESTING,num_bytes (uint64_t) - The number of elements to allocate in the VLA. <=1_000_000.,"@brief Demo using stack memory by allocating a Variable-Length Array (VLA) on the stack. +@param args_str +- Arg 0: num_bytes (uint64_t) - The number of elements to allocate in the VLA. <=1_000_000. +@return 0 on success, >0 on error" +eps_watchdog,TCMDEXEC_eps_watchdog,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Triggers/services the EPS watchdog. No args. +@param args_str No arguments. +@return 0 on success, 1 on failure." +eps_system_reset,TCMDEXEC_eps_system_reset,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Resets the EPS system. +@param args_str No arguments. +@return 0 on success, 1 on failure." +eps_no_operation,TCMDEXEC_eps_no_operation,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Calls the EPS no-op (no operation) command. Likely not useful. +@param args_str No arguments. +@return 0 on success, 1 on failure." +eps_cancel_operation,TCMDEXEC_eps_cancel_operation,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Calls the EPS cancel operation command. Likely not useful. +@param args_str No arguments. +@return 0 on success, 1 on failure. +@note This command likely isn't useful, as telecommands cannot be trigger simultaneously, and +thus another command to the EPS cannot really be cancelled from here." +eps_switch_to_mode,TCMDEXEC_eps_switch_to_mode,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"New mode to switch to. Either ""nominal"" or ""safety"".","@brief Switches the EPS to ""nominal"" or ""safety"" mode. +@param args_str +- Arg 0: New mode to switch to. Either ""nominal"" or ""safety"". +@return 0 on success, 1 on failure. +@note See EPS Software ICD, Page 12, Section 3 (Functional Description) for state/mode definitions." +eps_set_channel_enabled,TCMDEXEC_eps_set_channel_enabled,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"The channel name or number (string)., 1 to enable (power on), 0 to disable (power off)","@brief Sets the EPS channel to be enabled (on) or disabled (off). +@param args_str +- Arg 0: The channel name or number (string). +- Arg 1: 1 to enable (power on), 0 to disable (power off) +@return 0 on success, >0 on failure +@note Valid string values for Arg 0: ""vbatt_stack"", ""stack_5v"", ""stack_3v3"", ""camera"", +""uhf_antenna_deploy"", ""lora_module"", ""mpi"", ""boom""." +eps_get_system_status_json,TCMDEXEC_eps_get_system_status_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS system status, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pdu_overcurrent_fault_state_json,TCMDEXEC_eps_get_pdu_overcurrent_fault_state_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PDU (Power Distribution Unit) overcurrent fault status, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pbu_abf_placed_state_json,TCMDEXEC_eps_get_pbu_abf_placed_state_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PBU (Power Battery Unit) ABF placed status, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pdu_housekeeping_data_eng_json,TCMDEXEC_eps_get_pdu_housekeeping_data_eng_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PDU (Power Distribution Unit) housekeeping data, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pdu_housekeeping_data_run_avg_json,TCMDEXEC_eps_get_pdu_housekeeping_data_run_avg_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PDU (Power Distribution Unit) housekeeping data (running average), and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pbu_housekeeping_data_eng_json,TCMDEXEC_eps_get_pbu_housekeeping_data_eng_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PBU (Power Battery Unit) housekeeping data, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pbu_housekeeping_data_run_avg_json,TCMDEXEC_eps_get_pbu_housekeeping_data_run_avg_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PBU (Power Battery Unit) housekeeping data (running average), and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pcu_housekeeping_data_eng_json,TCMDEXEC_eps_get_pcu_housekeeping_data_eng_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PCU (Power Conditioning Unit, solar panel MPPT) housekeeping data, and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_pcu_housekeeping_data_run_avg_json,TCMDEXEC_eps_get_pcu_housekeeping_data_run_avg_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PCU (Power Conditioning Unit, solar panel MPPT) housekeeping data (running average), and display it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_piu_housekeeping_data_eng_json,TCMDEXEC_eps_get_piu_housekeeping_data_eng_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Gets the EPS PIU (Power Integrated Unit, info about all systems) housekeeping data, and returns it as a JSON string. +@return 0 on success, >0 on failure." +eps_get_piu_housekeeping_data_run_avg_json,TCMDEXEC_eps_get_piu_housekeeping_data_run_avg_json,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Get the EPS PIU (Power Integrated Unit, info about all systems) housekeeping data (running average), and display it as a JSON string. +@return 0 on success, >0 on failure." +agenda_delete_all,TCMDEXEC_agenda_delete_all,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Delete all agendas +@param args_str No arguments needed +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 on success" +agenda_delete_by_tssent,TCMDEXEC_agenda_delete_by_tssent,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Timestamp sent (uint64_t) - The tssent timestamp of the agenda entry to delete.,"@brief Telecommand: Delete agenda entry by tssent timestamp +@param args_str +- Arg 0: Timestamp sent (uint64_t) - The tssent timestamp of the agenda entry to delete. +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 on success, >0 on error" +agenda_fetch_jsonl,TCMDEXEC_agenda_fetch_jsonl,0,TCMD_READINESS_LEVEL_FOR_OPERATION,,"@brief Telecommand: Fetch all pending agenda items, and log them each as JSONL +@param args_str No arguments needed +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 on success, 1 if there are no active agendas." +agenda_delete_by_name,TCMDEXEC_agenda_delete_by_name,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"telecommand name (string) - The name of the telecommand function in the agenda to delete. (e.g, hello_world)","@brief Telecommand: Delete all agenda entries with a telecommand name +@param args_str +- Arg 0: telecommand name (string) - The name of the telecommand function in the agenda to delete. (e.g, hello_world) +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0 on success, > 0 on error" +mpi_send_command_hex,TCMDEXEC_mpi_send_command_hex,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"Hex-encoded string representing the configuration command + arguments (IF ANY) to send to the MPI, INCLUDING 'TC' (0x54 0x43)","@brief Send a configuration command & params (IF ANY) to the MPI encoded in hex +@param args_str +- Arg 0: Hex-encoded string representing the configuration command + arguments (IF ANY) to send to the MPI, INCLUDING 'TC' (0x54 0x43) +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0: Success, 1: Invalid Input, 2: Failed UART transmission, 3: Failed UART reception, +4: MPI timeout before sending 1 byte, 5: MPI failed to execute CMD" +mpi_demo_tx_to_mpi,TCMDEXEC_mpi_demo_tx_to_mpi,0,TCMD_READINESS_LEVEL_GROUND_USAGE_ONLY,,"@brief Sends a message over UART to the MPI. +@param args_str No args. +@param tcmd_channel The channel on which the telecommand was received, and on which the response should be sent +@param response_output_buf The buffer to write the response to +@param response_output_buf_len The maximum length of the response_output_buf (its size) +@return 0: Success, >0: Failure" +stm32_internal_flash_read,TCMDEXEC_stm32_internal_flash_read,2,TCMD_READINESS_LEVEL_GROUND_USAGE_ONLY,"The address to start reading from, The number of bytes to read as a uint64_t","@brief Read data from the internal flash bank +@param args_str +- Arg 0: The address to start reading from +- Arg 1: The number of bytes to read as a uint64_t +@return 0 on success, > 0 on error" +stm32_internal_flash_write,TCMDEXEC_stm32_internal_flash_write,2,TCMD_READINESS_LEVEL_GROUND_USAGE_ONLY,"The data in hex format to write, The offset to start writing from","@brief Write data to the internal flash bank starting from address 0x08100000 +@param args_str +- Arg 0: The data in hex format to write +- Arg 1: The offset to start writing from +@note This telecommand is only for testing purposes, it is purposfully not fully fleshed out +as there is no intention on using this. Update as needed +@return 0 on success, > 0 on error" +stm32_internal_flash_erase,TCMDEXEC_stm32_internal_flash_erase,2,TCMD_READINESS_LEVEL_GROUND_USAGE_ONLY,"The starting page to erase as a uint64_t, The number of pages to erase as a uint64_t","@brief Erase a range of pages in the internal flash bank. +Only Erases for Flash Bank 2. +@param args_str +- Arg 0: The starting page to erase as a uint64_t +- Arg 1: The number of pages to erase as a uint64_t +@return 0 on success, > 0 on error" +ant_reset,TCMDEXEC_ant_reset,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B""","@brief Resets the specified antenna deployment system's microcontroller +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +@return 0 on success, > 0 otherwise" +ant_arm_antenna_system,TCMDEXEC_ant_arm_antenna_system,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B""","@brief Telecommand: Arm the antenna deploy system +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +@return 0 on success, >0 on error" +ant_disarm_antenna_system,TCMDEXEC_ant_disarm_antenna_system,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to disarm, and which i2c bus to use","@brief Disarms the specified antenna deploy system's mcu +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to disarm, and which i2c bus to use +@return 0 on success, 0 > otherwise" +ant_deploy_antenna,TCMDEXEC_ant_deploy_antenna,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Either ""A"" or ""B"", antenna number. between 1-4, Activation time in seconds","@brief Telecommand: Initiates deployment of the selected antenna +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Either ""A"" or ""B"" +- Arg 1: antenna number. between 1-4 +- Arg 2: Activation time in seconds +@return 0 on success, >0 on error" +ant_start_automated_antenna_deployment,TCMDEXEC_ant_start_automated_antenna_deployment,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"", Activation time in seconds","@brief begins deployment of all antennas, one by one. +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +- Arg 1: Activation time in seconds +@return returns 0 on success, > 0 otherwise" +ant_deploy_antenna_with_override,TCMDEXEC_ant_deploy_antenna_with_override,3,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"", antenna number. between 1-4, Activation time in seconds","@brief Telecommand: Initiates deployment of the selected antenna, ignoring whether the antennas current status is deployed. +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +- Arg 1: antenna number. between 1-4 +- Arg 2: Activation time in seconds +@return 0 on successful communication, >0 on communications error" +ant_cancel_deployment_system_activation,TCMDEXEC_ant_cancel_deployment_system_activation,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B""","@brief Cancels any active attempts to deploy an antenna +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +@return 0 on successful communication, > 0 on communications error" +ant_measure_temp,TCMDEXEC_ant_measure_temp,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B""","@brief Telecommand: Measures the temperature of the antenna controller in centi-degrees celsius +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +@return 0 on success, >0 on error" +ant_report_deployment_status,TCMDEXEC_ant_report_deployment_status,1,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B""","@brief Prints the deployment status of all antennas +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +@return 0 on successful communication, > 0 on communications error" +ant_report_antenna_deployment_activation_count,TCMDEXEC_ant_report_antenna_deployment_activation_count,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"", the antenna to check, between 1-4","@brief Prints the number of times deployment was attempted on the selected antenna +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +- Arg 1: the antenna to check, between 1-4 +@return 0 on successful communication, > 0 on communications error" +ant_report_antenna_deployment_activation_time,TCMDEXEC_ant_report_antenna_deployment_activation_time,2,TCMD_READINESS_LEVEL_FOR_OPERATION,"specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"", the antenna to check, between 1-4","@brief Prints amount of time the deployment system has been active for for the selected antenna +@param args_str +- Arg 0: specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either ""A"" or ""B"" +- Arg 1: the antenna to check, between 1-4 +@return 0 on successful communication, > 0 on communications error" +obc_read_temperature,TCMDEXEC_obc_read_temperature,1,TCMD_READINESS_LEVEL_FOR_OPERATION,Precision we want the temperature to be (9-12 bits).,"@brief Reads the temperature from the STDS75DS2F and stores it in the provided variable temperature. +Temperature range is -55 to 125 degrees celsius with +/- 3 degrees celsius accuracy over the whole range. +@param args_str +- Arg 0: Precision we want the temperature to be (9-12 bits). +@return 0 if successful, 1 if error." +comms_dipole_switch_set_state,TCMDEXEC_comms_dipole_switch_set_state,1,TCMD_READINESS_LEVEL_FLIGHT_TESTING,"The state of the dipole switch. Either ""1"" or ""2"".","@brief Sets the state of the dipole switch on the OBC to either Antenna 1 or Antenna 2. +@param args_str +- Arg 0: The state of the dipole switch. Either ""1"" or ""2"". +@return"