This is an auto-generated reference of all telecommands and configuration variables supported by the CTS-SAT-1 OBC firmware. It is generated by the build_tcmd_and_config_docs.py script.
Source data downloaded from the CTS-SAT-1-Ground-Support repository's bundled data files.
Table of Contents
- Readiness LevelsReadiness Levels
- Summary TableSummary Table
- Telecommand DetailsTelecommand Details
- Configuration VariablesConfiguration Variables
- Summary TableSummary Table
- Integer Configuration Variable DetailsInteger Configuration Variable Details
- String Configuration Variable DetailsString Configuration Variable Details
Telecommands
There are 242 telecommands defined.
Readiness Levels
Telecommand readiness levels indicate the operational risk of a telecommand. The TCMD_READINESS_LEVEL_ prefix is stripped in tables below.
| Readiness Level | Count |
| FLIGHT_TESTING | 12 |
| FOR_OPERATION | 213 |
| FOR_RECOVERY_OR_EXPERT | 8 |
| GROUND_USAGE_ONLY | 1 |
| HIGH_RISK_AND_UNSAFE | 8 |
Summary Table
| # | Name | Args | Readiness Level |
| 1 | `adcs_ack`adcs_ack | 0 | FOR_OPERATION |
| 2 | `adcs_acp_execution_state`adcs_acp_execution_state | 0 | FOR_OPERATION |
| 3 | `adcs_attitude_control_mode`adcs_attitude_control_mode | 2 | FOR_OPERATION |
| 4 | `adcs_attitude_estimation_mode`adcs_attitude_estimation_mode | 1 | FOR_OPERATION |
| 5 | `adcs_bootloader_clear_errors`adcs_bootloader_clear_errors | 0 | FOR_OPERATION |
| 6 | `adcs_clear_errors`adcs_clear_errors | 0 | FOR_OPERATION |
| 7 | `adcs_commanded_wheel_speed`adcs_commanded_wheel_speed | 0 | FOR_OPERATION |
| 8 | `adcs_communication_status`adcs_communication_status | 0 | FOR_OPERATION |
| 9 | `adcs_convert_to_jpg_by_checksum`adcs_convert_to_jpg_by_checksum | 3 | FOR_OPERATION |
| 10 | `adcs_convert_to_jpg_by_index`adcs_convert_to_jpg_by_index | 3 | FOR_OPERATION |
| 11 | `adcs_cubecontrol_current`adcs_cubecontrol_current | 0 | FOR_OPERATION |
| 12 | `adcs_deploy_magnetometer`adcs_deploy_magnetometer | 1 | FOR_OPERATION |
| 13 | `adcs_download_index_file`adcs_download_index_file | 2 | FOR_OPERATION |
| 14 | `adcs_download_sd_file_by_checksum`adcs_download_sd_file_by_checksum | 1 | FOR_OPERATION |
| 15 | `adcs_download_sd_file_by_index`adcs_download_sd_file_by_index | 1 | FOR_OPERATION |
| 16 | `adcs_enter_low_power_mode`adcs_enter_low_power_mode | 1 | FOR_OPERATION |
| 17 | `adcs_erase_sd_file_by_checksum`adcs_erase_sd_file_by_checksum | 1 | FOR_OPERATION |
| 18 | `adcs_erase_sd_file_by_index`adcs_erase_sd_file_by_index | 1 | FOR_OPERATION |
| 19 | `adcs_estimate_angular_rates`adcs_estimate_angular_rates | 0 | FOR_OPERATION |
| 20 | `adcs_estimate_fine_angular_rates`adcs_estimate_fine_angular_rates | 0 | FOR_OPERATION |
| 21 | `adcs_estimated_attitude_angles`adcs_estimated_attitude_angles | 0 | FOR_OPERATION |
| 22 | `adcs_estimated_gyro_bias`adcs_estimated_gyro_bias | 0 | FOR_OPERATION |
| 23 | `adcs_estimation_innovation_vector`adcs_estimation_innovation_vector | 0 | FOR_OPERATION |
| 24 | `adcs_exit_bootloader`adcs_exit_bootloader | 0 | FOR_OPERATION |
| 25 | `adcs_fine_sun_vector`adcs_fine_sun_vector | 0 | FOR_OPERATION |
| 26 | `adcs_format_sd`adcs_format_sd | 0 | FOR_OPERATION |
| 27 | `adcs_generic_bootloader_command`adcs_generic_bootloader_command | 2 | FOR_OPERATION |
| 28 | `adcs_generic_command`adcs_generic_command | 2 | FOR_OPERATION |
| 29 | `adcs_generic_telemetry_request`adcs_generic_telemetry_request | 2 | FOR_OPERATION |
| 30 | `adcs_get_augmented_sgp4_params`adcs_get_augmented_sgp4_params | 0 | FOR_OPERATION |
| 31 | `adcs_get_commanded_attitude_angles`adcs_get_commanded_attitude_angles | 0 | FOR_OPERATION |
| 32 | `adcs_get_cubesense_currents`adcs_get_cubesense_currents | 0 | FOR_OPERATION |
| 33 | `adcs_get_current_state_1`adcs_get_current_state_1 | 0 | FOR_OPERATION |
| 34 | `adcs_get_current_unix_time`adcs_get_current_unix_time | 0 | FOR_OPERATION |
| 35 | `adcs_get_estimation_params`adcs_get_estimation_params | 0 | FOR_OPERATION |
| 36 | `adcs_get_llh_position`adcs_get_llh_position | 0 | FOR_OPERATION |
| 37 | `adcs_get_magnetometer_config`adcs_get_magnetometer_config | 0 | FOR_OPERATION |
| 38 | `adcs_get_magnetorquer_command`adcs_get_magnetorquer_command | 0 | FOR_OPERATION |
| 39 | `adcs_get_misc_currents`adcs_get_misc_currents | 0 | FOR_OPERATION |
| 40 | `adcs_get_power_control`adcs_get_power_control | 0 | FOR_OPERATION |
| 41 | `adcs_get_rate_gyro_config`adcs_get_rate_gyro_config | 0 | FOR_OPERATION |
| 42 | `adcs_get_raw_magnetometer_values`adcs_get_raw_magnetometer_values | 0 | FOR_OPERATION |
| 43 | `adcs_get_sd_log_config`adcs_get_sd_log_config | 1 | FOR_OPERATION |
| 44 | `adcs_get_sgp4_orbit_params`adcs_get_sgp4_orbit_params | 0 | FOR_OPERATION |
| 45 | `adcs_get_tracking_controller_target_reference`adcs_get_tracking_controller_target_reference | 0 | FOR_OPERATION |
| 46 | `adcs_get_unix_time_save_mode`adcs_get_unix_time_save_mode | 0 | FOR_OPERATION |
| 47 | `adcs_get_wheel_currents`adcs_get_wheel_currents | 0 | FOR_OPERATION |
| 48 | `adcs_get_wheel_speed`adcs_get_wheel_speed | 0 | FOR_OPERATION |
| 49 | `adcs_identification`adcs_identification | 0 | FOR_OPERATION |
| 50 | `adcs_igrf_magnetic_field_vector`adcs_igrf_magnetic_field_vector | 0 | FOR_OPERATION |
| 51 | `adcs_magnetic_field_vector`adcs_magnetic_field_vector | 0 | FOR_OPERATION |
| 52 | `adcs_measurements`adcs_measurements | 0 | FOR_OPERATION |
| 53 | `adcs_nadir_vector`adcs_nadir_vector | 0 | FOR_OPERATION |
| 54 | `adcs_program_status`adcs_program_status | 0 | FOR_OPERATION |
| 55 | `adcs_quaternion_error_vector`adcs_quaternion_error_vector | 0 | FOR_OPERATION |
| 56 | `adcs_rate_sensor_rates`adcs_rate_sensor_rates | 0 | FOR_OPERATION |
| 57 | `adcs_raw_cam1_sensor`adcs_raw_cam1_sensor | 0 | FOR_OPERATION |
| 58 | `adcs_raw_cam2_sensor`adcs_raw_cam2_sensor | 0 | FOR_OPERATION |
| 59 | `adcs_raw_coarse_sun_sensor_1_to_6`adcs_raw_coarse_sun_sensor_1_to_6 | 0 | FOR_OPERATION |
| 60 | `adcs_raw_coarse_sun_sensor_7_to_10`adcs_raw_coarse_sun_sensor_7_to_10 | 0 | FOR_OPERATION |
| 61 | `adcs_request_commissioning_telemetry`adcs_request_commissioning_telemetry | 3 | FOR_OPERATION |
| 62 | `adcs_reset`adcs_reset | 0 | FOR_OPERATION |
| 63 | `adcs_run_once`adcs_run_once | 0 | FOR_OPERATION |
| 64 | `adcs_save_config`adcs_save_config | 0 | FOR_OPERATION |
| 65 | `adcs_save_image_to_sd`adcs_save_image_to_sd | 2 | FOR_OPERATION |
| 66 | `adcs_save_orbit_params`adcs_save_orbit_params | 0 | FOR_OPERATION |
| 67 | `adcs_set_augmented_sgp4_params`adcs_set_augmented_sgp4_params | 17 | FOR_OPERATION |
| 68 | `adcs_set_commanded_attitude_angles`adcs_set_commanded_attitude_angles | 3 | FOR_OPERATION |
| 69 | `adcs_set_commissioning_modes`adcs_set_commissioning_modes | 2 | FOR_OPERATION |
| 70 | `adcs_set_estimation_params`adcs_set_estimation_params | 17 | FOR_OPERATION |
| 71 | `adcs_set_magnetometer_config`adcs_set_magnetometer_config | 15 | FOR_OPERATION |
| 72 | `adcs_set_magnetometer_mode`adcs_set_magnetometer_mode | 1 | FOR_OPERATION |
| 73 | `adcs_set_magnetorquer_output`adcs_set_magnetorquer_output | 3 | FOR_OPERATION |
| 74 | `adcs_set_power_control`adcs_set_power_control | 10 | FOR_OPERATION |
| 75 | `adcs_set_rate_gyro_config`adcs_set_rate_gyro_config | 7 | FOR_OPERATION |
| 76 | `adcs_set_run_mode`adcs_set_run_mode | 1 | FOR_OPERATION |
| 77 | `adcs_set_sd_log_config`adcs_set_sd_log_config | 4 | FOR_OPERATION |
| 78 | `adcs_set_sgp4_orbit_params`adcs_set_sgp4_orbit_params | 8 | FOR_OPERATION |
| 79 | `adcs_set_tracking_controller_target_reference`adcs_set_tracking_controller_target_reference | 3 | FOR_OPERATION |
| 80 | `adcs_set_unix_time_save_mode`adcs_set_unix_time_save_mode | 4 | FOR_OPERATION |
| 81 | `adcs_set_wheel_speed`adcs_set_wheel_speed | 3 | FOR_OPERATION |
| 82 | `adcs_synchronize_unix_time`adcs_synchronize_unix_time | 0 | FOR_OPERATION |
| 83 | `adcs_track_sun`adcs_track_sun | 0 | FOR_OPERATION |
| 84 | `agenda_delete_all`agenda_delete_all | 0 | FOR_OPERATION |
| 85 | `agenda_delete_by_name`agenda_delete_by_name | 1 | FOR_OPERATION |
| 86 | `agenda_delete_by_tssent`agenda_delete_by_tssent | 1 | FOR_OPERATION |
| 87 | `agenda_enqueue_from_file`agenda_enqueue_from_file | 3 | FOR_OPERATION |
| 88 | `agenda_fetch_json_grouped`agenda_fetch_json_grouped | 0 | FOR_OPERATION |
| 89 | `agenda_fetch_logged_jsonl`agenda_fetch_logged_jsonl | 0 | FOR_OPERATION |
| 90 | `ant_arm_antenna_system`ant_arm_antenna_system | 1 | FOR_OPERATION |
| 91 | `ant_cancel_deployment_system_activation`ant_cancel_deployment_system_activation | 1 | FOR_OPERATION |
| 92 | `ant_deploy_antenna`ant_deploy_antenna | 3 | FOR_OPERATION |
| 93 | `ant_deploy_antenna_with_override`ant_deploy_antenna_with_override | 3 | FOR_OPERATION |
| 94 | `ant_disarm_antenna_system`ant_disarm_antenna_system | 1 | FOR_OPERATION |
| 95 | `ant_measure_temp`ant_measure_temp | 1 | FOR_OPERATION |
| 96 | `ant_report_antenna_deployment_activation_count`ant_report_antenna_deployment_activation_count | 2 | FOR_OPERATION |
| 97 | `ant_report_antenna_deployment_activation_time`ant_report_antenna_deployment_activation_time | 2 | FOR_OPERATION |
| 98 | `ant_report_deployment_status`ant_report_deployment_status | 1 | FOR_OPERATION |
| 99 | `ant_reset`ant_reset | 1 | FOR_OPERATION |
| 100 | `ant_start_automated_antenna_deployment`ant_start_automated_antenna_deployment | 2 | FOR_OPERATION |
| 101 | `available_telecommands`available_telecommands | 0 | FOR_OPERATION |
| 102 | `boom_deploy_timed`boom_deploy_timed | 2 | FOR_RECOVERY_OR_EXPERT |
| 103 | `boom_self_check`boom_self_check | 0 | FOR_OPERATION |
| 104 | `bulkup16`bulkup16 | 1 | FOR_OPERATION |
| 105 | `bulkup64`bulkup64 | 1 | FOR_OPERATION |
| 106 | `camera_capture`camera_capture | 2 | FOR_OPERATION |
| 107 | `camera_change_baud_rate`camera_change_baud_rate | 1 | FOR_RECOVERY_OR_EXPERT |
| 108 | `camera_setup`camera_setup | 0 | FOR_OPERATION |
| 109 | `camera_test`camera_test | 0 | FOR_RECOVERY_OR_EXPERT |
| 110 | `comms_bulk_file_downlink_pause`comms_bulk_file_downlink_pause | 0 | FOR_OPERATION |
| 111 | `comms_bulk_file_downlink_resume`comms_bulk_file_downlink_resume | 0 | FOR_OPERATION |
| 112 | `comms_bulk_file_downlink_start`comms_bulk_file_downlink_start | 3 | FOR_OPERATION |
| 113 | `comms_bulk_uplink_close_file`comms_bulk_uplink_close_file | 0 | FOR_OPERATION |
| 114 | `comms_bulk_uplink_open_file`comms_bulk_uplink_open_file | 2 | FOR_OPERATION |
| 115 | `comms_bulk_uplink_seek`comms_bulk_uplink_seek | 1 | FOR_OPERATION |
| 116 | `comms_bulk_uplink_write_bytes_base64`comms_bulk_uplink_write_bytes_base64 | 1 | FOR_OPERATION |
| 117 | `comms_bulk_uplink_write_bytes_hex`comms_bulk_uplink_write_bytes_hex | 1 | FOR_OPERATION |
| 118 | `comms_get_rf_switch_info`comms_get_rf_switch_info | 0 | FOR_OPERATION |
| 119 | `comms_set_rf_switch_control_mode`comms_set_rf_switch_control_mode | 1 | FLIGHT_TESTING |
| 120 | `config_get_all_int_vars_json`config_get_all_int_vars_json | 0 | FOR_OPERATION |
| 121 | `config_get_all_vars_jsonl`config_get_all_vars_jsonl | 0 | FOR_OPERATION |
| 122 | `config_get_int_var_json`config_get_int_var_json | 1 | FOR_OPERATION |
| 123 | `config_get_str_var_json`config_get_str_var_json | 1 | FOR_OPERATION |
| 124 | `config_set_int_var`config_set_int_var | 2 | FOR_OPERATION |
| 125 | `config_set_str_var`config_set_str_var | 2 | FOR_OPERATION |
| 126 | `core_system_stats`core_system_stats | 0 | FOR_OPERATION |
| 127 | `correct_system_time`correct_system_time | 1 | FOR_OPERATION |
| 128 | `demo_blocking_delay`demo_blocking_delay | 1 | FLIGHT_TESTING |
| 129 | `demo_os_delay`demo_os_delay | 1 | FLIGHT_TESTING |
| 130 | `echo_back_args`echo_back_args | 1 | FOR_OPERATION |
| 131 | `echo_back_uint32_args`echo_back_uint32_args | 3 | FOR_OPERATION |
| 132 | `eps_cancel_operation`eps_cancel_operation | 0 | FOR_OPERATION |
| 133 | `eps_get_current_battery_percent`eps_get_current_battery_percent | 0 | FOR_OPERATION |
| 134 | `eps_get_enabled_channels_json`eps_get_enabled_channels_json | 0 | FOR_OPERATION |
| 135 | `eps_get_pbu_abf_placed_state_json`eps_get_pbu_abf_placed_state_json | 0 | FOR_OPERATION |
| 136 | `eps_get_pbu_housekeeping_data_eng_json`eps_get_pbu_housekeeping_data_eng_json | 0 | FOR_OPERATION |
| 137 | `eps_get_pbu_housekeeping_data_run_avg_json`eps_get_pbu_housekeeping_data_run_avg_json | 0 | FOR_OPERATION |
| 138 | `eps_get_pcu_housekeeping_data_eng_json`eps_get_pcu_housekeeping_data_eng_json | 0 | FOR_OPERATION |
| 139 | `eps_get_pcu_housekeeping_data_run_avg_json`eps_get_pcu_housekeeping_data_run_avg_json | 0 | FOR_OPERATION |
| 140 | `eps_get_pdu_active_channels_data_json`eps_get_pdu_active_channels_data_json | 0 | FOR_OPERATION |
| 141 | `eps_get_pdu_active_channels_data_run_avg_json`eps_get_pdu_active_channels_data_run_avg_json | 0 | FOR_OPERATION |
| 142 | `eps_get_pdu_data_for_channel_json`eps_get_pdu_data_for_channel_json | 1 | FOR_OPERATION |
| 143 | `eps_get_pdu_housekeeping_data_eng_json`eps_get_pdu_housekeeping_data_eng_json | 0 | FOR_OPERATION |
| 144 | `eps_get_pdu_housekeeping_data_run_avg_json`eps_get_pdu_housekeeping_data_run_avg_json | 0 | FOR_OPERATION |
| 145 | `eps_get_pdu_overcurrent_fault_state_json`eps_get_pdu_overcurrent_fault_state_json | 0 | FOR_OPERATION |
| 146 | `eps_get_piu_housekeeping_data_eng_json`eps_get_piu_housekeeping_data_eng_json | 0 | FOR_OPERATION |
| 147 | `eps_get_piu_housekeeping_data_run_avg_json`eps_get_piu_housekeeping_data_run_avg_json | 0 | FOR_OPERATION |
| 148 | `eps_get_system_status_json`eps_get_system_status_json | 0 | FOR_OPERATION |
| 149 | `eps_no_operation`eps_no_operation | 0 | FOR_OPERATION |
| 150 | `eps_power_management_set_current_threshold`eps_power_management_set_current_threshold | 2 | FOR_OPERATION |
| 151 | `eps_set_channel_enabled`eps_set_channel_enabled | 2 | FOR_OPERATION |
| 152 | `eps_switch_to_mode`eps_switch_to_mode | 1 | FOR_OPERATION |
| 153 | `eps_system_reset`eps_system_reset | 0 | FOR_RECOVERY_OR_EXPERT |
| 154 | `eps_watchdog`eps_watchdog | 0 | FOR_OPERATION |
| 155 | `exec_blob_from_fs`exec_blob_from_fs | 3 | FOR_RECOVERY_OR_EXPERT |
| 156 | `flash_activate_each_cs`flash_activate_each_cs | 0 | FLIGHT_TESTING |
| 157 | `flash_benchmark_erase_write_read`flash_benchmark_erase_write_read | 3 | FLIGHT_TESTING |
| 158 | `flash_each_is_reachable`flash_each_is_reachable | 0 | FOR_OPERATION |
| 159 | `flash_erase`flash_erase | 2 | FLIGHT_TESTING |
| 160 | `flash_force_corrupt_filesystem`flash_force_corrupt_filesystem | 1 | HIGH_RISK_AND_UNSAFE |
| 161 | `flash_read_hex`flash_read_hex | 3 | FOR_OPERATION |
| 162 | `flash_read_status_register`flash_read_status_register | 1 | FOR_OPERATION |
| 163 | `flash_reset`flash_reset | 1 | FLIGHT_TESTING |
| 164 | `flash_write_hex`flash_write_hex | 3 | FLIGHT_TESTING |
| 165 | `freertos_demo_stack_usage`freertos_demo_stack_usage | 1 | FLIGHT_TESTING |
| 166 | `freetos_list_tasks_jsonl`freetos_list_tasks_jsonl | 0 | FOR_OPERATION |
| 167 | `fs_benchmark_write_read`fs_benchmark_write_read | 2 | FLIGHT_TESTING |
| 168 | `fs_compress_file_with_heatshrink`fs_compress_file_with_heatshrink | 4 | FOR_OPERATION |
| 169 | `fs_count_hex_occurrences`fs_count_hex_occurrences | 2 | FOR_OPERATION |
| 170 | `fs_count_str_occurrences`fs_count_str_occurrences | 2 | FOR_OPERATION |
| 171 | `fs_delete_dir`fs_delete_dir | 1 | FOR_OPERATION |
| 172 | `fs_delete_file`fs_delete_file | 1 | FOR_OPERATION |
| 173 | `fs_demo_write_random_data`fs_demo_write_random_data | 3 | FLIGHT_TESTING |
| 174 | `fs_demo_write_then_read`fs_demo_write_then_read | 1 | FLIGHT_TESTING |
| 175 | `fs_find_nth_hex_occurrence`fs_find_nth_hex_occurrence | 3 | FOR_OPERATION |
| 176 | `fs_find_nth_str_occurrence`fs_find_nth_str_occurrence | 3 | FOR_OPERATION |
| 177 | `fs_format_storage`fs_format_storage | 0 | FOR_RECOVERY_OR_EXPERT |
| 178 | `fs_get_filesystem_stats_json`fs_get_filesystem_stats_json | 0 | FOR_OPERATION |
| 179 | `fs_list_directory`fs_list_directory | 3 | FOR_OPERATION |
| 180 | `fs_list_directory_json`fs_list_directory_json | 3 | FOR_OPERATION |
| 181 | `fs_make_directory`fs_make_directory | 1 | FOR_OPERATION |
| 182 | `fs_mount`fs_mount | 0 | FOR_OPERATION |
| 183 | `fs_read_file_hex`fs_read_file_hex | 3 | FOR_OPERATION |
| 184 | `fs_read_file_sha256_hash_json`fs_read_file_sha256_hash_json | 3 | FOR_OPERATION |
| 185 | `fs_read_text_file`fs_read_text_file | 3 | FOR_OPERATION |
| 186 | `fs_unmount`fs_unmount | 0 | FOR_OPERATION |
| 187 | `fs_write_file_hex`fs_write_file_hex | 3 | FOR_OPERATION |
| 188 | `fs_write_file_str`fs_write_file_str | 2 | FOR_OPERATION |
| 189 | `get_all_system_thermal_info`get_all_system_thermal_info | 0 | FOR_OPERATION |
| 190 | `get_system_time`get_system_time | 0 | FOR_OPERATION |
| 191 | `gnss_disable_firehose_storage_mode`gnss_disable_firehose_storage_mode | 0 | FOR_OPERATION |
| 192 | `gnss_enable_firehose_storage_mode`gnss_enable_firehose_storage_mode | 1 | FOR_OPERATION |
| 193 | `gnss_send_cmd_ascii`gnss_send_cmd_ascii | 1 | FOR_OPERATION |
| 194 | `gnss_send_cmd_ascii_get_response_hex`gnss_send_cmd_ascii_get_response_hex | 1 | FOR_OPERATION |
| 195 | `hello_world`hello_world | 0 | FOR_OPERATION |
| 196 | `log_report_all_sink_enabled_states`log_report_all_sink_enabled_states | 0 | FOR_OPERATION |
| 197 | `log_report_all_system_file_logging_states`log_report_all_system_file_logging_states | 0 | FOR_OPERATION |
| 198 | `log_report_messages_from_memory`log_report_messages_from_memory | 2 | FOR_OPERATION |
| 199 | `log_report_n_latest_messages_from_memory`log_report_n_latest_messages_from_memory | 1 | FOR_OPERATION |
| 200 | `log_set_sink_debugging_messages_state`log_set_sink_debugging_messages_state | 2 | FOR_OPERATION |
| 201 | `log_set_sink_enabled_state`log_set_sink_enabled_state | 2 | FOR_OPERATION |
| 202 | `log_set_system_debugging_messages_state`log_set_system_debugging_messages_state | 2 | FOR_OPERATION |
| 203 | `log_set_system_file_logging_enabled_state`log_set_system_file_logging_enabled_state | 2 | FOR_OPERATION |
| 204 | `log_set_system_severity_mask`log_set_system_severity_mask | 2 | FOR_OPERATION |
| 205 | `mpi_demo_tx_to_mpi`mpi_demo_tx_to_mpi | 0 | GROUND_USAGE_ONLY |
| 206 | `mpi_disable_active_mode`mpi_disable_active_mode | 0 | FOR_OPERATION |
| 207 | `mpi_enable_active_mode`mpi_enable_active_mode | 1 | FOR_OPERATION |
| 208 | `mpi_send_command_get_response_hex`mpi_send_command_get_response_hex | 1 | FOR_OPERATION |
| 209 | `mpi_set_transceiver_mode`mpi_set_transceiver_mode | 1 | FOR_OPERATION |
| 210 | `obc_adc_read_vbat_voltage`obc_adc_read_vbat_voltage | 0 | FOR_OPERATION |
| 211 | `obc_firmware_version`obc_firmware_version | 0 | FOR_OPERATION |
| 212 | `obc_get_rbf_state`obc_get_rbf_state | 0 | FOR_OPERATION |
| 213 | `obc_read_temperature`obc_read_temperature | 0 | FOR_OPERATION |
| 214 | `obc_read_temperature_complex`obc_read_temperature_complex | 1 | FOR_OPERATION |
| 215 | `obc_set_stm32_sysclk_to_hse`obc_set_stm32_sysclk_to_hse | 0 | FOR_OPERATION |
| 216 | `reboot`reboot | 0 | FOR_OPERATION |
| 217 | `run_all_unit_tests`run_all_unit_tests | 0 | FOR_OPERATION |
| 218 | `scan_i2c_bus`scan_i2c_bus | 1 | FOR_OPERATION |
| 219 | `scan_i2c_bus_verbose`scan_i2c_bus_verbose | 1 | FOR_OPERATION |
| 220 | `set_eps_time_based_on_obc_time`set_eps_time_based_on_obc_time | 0 | FOR_OPERATION |
| 221 | `set_obc_time_based_on_eps_time`set_obc_time_based_on_eps_time | 0 | FOR_OPERATION |
| 222 | `set_obc_time_based_on_gnss_pps`set_obc_time_based_on_gnss_pps | 0 | FOR_OPERATION |
| 223 | `set_obc_time_based_on_gnss_time`set_obc_time_based_on_gnss_time | 0 | FOR_OPERATION |
| 224 | `set_system_time`set_system_time | 1 | FOR_OPERATION |
| 225 | `set_system_time_approx`set_system_time_approx | 1 | FOR_OPERATION |
| 226 | `stm32_internal_flash_bank_erase`stm32_internal_flash_bank_erase | 1 | HIGH_RISK_AND_UNSAFE |
| 227 | `stm32_internal_flash_calculate_sha256`stm32_internal_flash_calculate_sha256 | 2 | FOR_RECOVERY_OR_EXPERT |
| 228 | `stm32_internal_flash_get_active_flash_bank`stm32_internal_flash_get_active_flash_bank | 0 | HIGH_RISK_AND_UNSAFE |
| 229 | `stm32_internal_flash_get_option_bytes`stm32_internal_flash_get_option_bytes | 0 | HIGH_RISK_AND_UNSAFE |
| 230 | `stm32_internal_flash_page_erase`stm32_internal_flash_page_erase | 3 | HIGH_RISK_AND_UNSAFE |
| 231 | `stm32_internal_flash_read`stm32_internal_flash_read | 2 | FOR_RECOVERY_OR_EXPERT |
| 232 | `stm32_internal_flash_set_active_flash_bank`stm32_internal_flash_set_active_flash_bank | 1 | HIGH_RISK_AND_UNSAFE |
| 233 | `stm32_internal_flash_write`stm32_internal_flash_write | 2 | HIGH_RISK_AND_UNSAFE |
| 234 | `stm32_internal_flash_write_file_to_internal_flash`stm32_internal_flash_write_file_to_internal_flash | 4 | HIGH_RISK_AND_UNSAFE |
| 235 | `system_self_check_as_json`system_self_check_as_json | 0 | FOR_OPERATION |
| 236 | `system_self_check_failures_as_json`system_self_check_failures_as_json | 0 | FOR_OPERATION |
| 237 | `uart_get_errors_json`uart_get_errors_json | 0 | FOR_OPERATION |
| 238 | `uart_get_last_rx_times_json`uart_get_last_rx_times_json | 0 | FOR_OPERATION |
| 239 | `uart_send_hex`uart_send_hex | 2 | FOR_OPERATION |
| 240 | `uart_send_hex_get_response_hex`uart_send_hex_get_response_hex | 2 | FOR_OPERATION |
| 241 | `uart_send_str`uart_send_str | 2 | FOR_OPERATION |
| 242 | `uart_set_baud_rate`uart_set_baud_rate | 2 | FOR_OPERATION |
Telecommand Details
adcs_ack
| Field | Value |
| Function | TCMDEXEC_adcs_ack |
| Number of Arguments | 0 |
| Readiness Level | FOR_OPERATION |
Full docstring:
@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_acp_execution_state
Full docstring:
@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
Arguments:
- Control mode to set (Table 77 in Firmware Manual)
- Timeout to set control mode
Full docstring:
@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
@details ADCS_control_mode_enum_t
ADCS_CONTROL_MODE_NONE = 0,
ADCS_CONTROL_MODE_DETUMBLING = 1,
ADCS_CONTROL_MODE_Y_THOMSON_SPIN = 2,
ADCS_CONTROL_MODE_Y_WHEEL_MOMENTUM_STABILIZED_INITIAL_PITCH_ACQUISITION = 3,
ADCS_CONTROL_MODE_Y_WHEEL_MOMENTUM_STABILIZED_STEADY_STATE = 4,
ADCS_CONTROL_MODE_XYZ_WHEEL = 5,
ADCS_CONTROL_MODE_RWHEEL_SUN_TRACKING = 6,
ADCS_CONTROL_MODE_RWHEEL_TARGET_TRACKING = 7,
ADCS_CONTROL_MODE_VERY_FAST_SPIN_DETUMBLING = 8,
ADCS_CONTROL_MODE_FAST_SPIN_DETUMBLING = 9,
ADCS_CONTROL_MODE_USER_SPECIFIC_1 = 10,
ADCS_CONTROL_MODE_USER_SPECIFIC_2 = 11,
ADCS_CONTROL_MODE_STOP_R_WHEELS = 12,
ADCS_CONTROL_MODE_USER_CODED = 13,
ADCS_CONTROL_MODE_SUN_TRACKING_YAW_OR_ROLL_ONLY_WHEEL = 14,
ADCS_CONTROL_MODE_TARGET_TRACKING_YAW_ONLY_WHEEL = 15
adcs_attitude_estimation_mode
Arguments:
- Attitude estimation mode to set (Table 79 in Firmware Manual)
Full docstring:
@brief Telecommand: Request the given telemetry data from the ADCS
@param args_str
- Arg 0: Attitude estimation mode to set (Table 79 in Firmware Manual)
@return 0 on success, >0 on error
@details ADCS_estimation_mode_enum_t
ADCS_ESTIMATION_MODE_NONE = 0,
ADCS_ESTIMATION_MODE_MEMS_RATE_SENSING = 1,
ADCS_ESTIMATION_MODE_MAGNETOMETER_RATE_FILTER = 2,
ADCS_ESTIMATION_MODE_MAGNETOMETER_RATE_FILTER_WITH_PITCH_ESTIMATION = 3,
ADCS_ESTIMATION_MODE_MAGNETOMETER_AND_FINE_SUN_TRIAD_ALGORITHM = 4,
ADCS_ESTIMATION_MODE_FULL_STATE_EXTENDED_KALMAN_FILTER = 5,
ADCS_ESTIMATION_MODE_MEMS_GYRO_EXTENDED_KALMAN_FILTER = 6,
ADCS_ESTIMATION_MODE_USER_CODED_ESTIMATION_MODE = 7
adcs_bootloader_clear_errors
Full docstring:
@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_clear_errors
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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_convert_to_jpg_by_checksum
Arguments:
- The CRC16 checksum of the file as two hex bytes in order (e.g. pass checksum 0x07f1 as "07 f1")
- Quality factor (1 is the most compressed and lossy, 100 is the least)
- White balance
Full docstring:
@brief Telecommand: Instruct the ADCS to convert an SD card file to JPG format
@param args_str
- Arg 0: The CRC16 checksum of the file as two hex bytes in order (e.g. pass checksum 0x07f1 as "07 f1")
- Arg 1: Quality factor (1 is the most compressed and lossy, 100 is the least)
- Arg 2: White balance
@return 0 on success, >0 on error
adcs_convert_to_jpg_by_index
Arguments:
- Index of the file to convert
- Quality factor (1 is the most compressed and lossy, 100 is the least)
- White balance
Full docstring:
@brief Telecommand: Instruct the ADCS to convert an SD card file to JPG format
@param args_str
- Arg 0: Index of the file to convert
- Arg 1: Quality factor (1 is the most compressed and lossy, 100 is the least)
- Arg 2: White balance
@return 0 on success, >0 on error
adcs_cubecontrol_current
Full docstring:
@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
Arguments:
- timeout for deployment [seconds]
Full docstring:
@brief Telecommand: Request the given telemetry data from the ADCS
@param args_str
- Arg 0: timeout for deployment [seconds]
@return 0 on success, >0 on error
adcs_download_index_file
Arguments:
- Offset: The offset index to start reading (starts at 0).
- Length: The number of files to get (limited to 32). 0 to request the max.
Full docstring:
@brief Telecommand: Get the list of downloadable files from the ADCS SD card as log messages.
@param args_str
- Arg 0: Offset: The offset index to start reading (starts at 0).
- Arg 1: Length: The number of files to get (limited to 32). 0 to request the max.
@return 0 on success, >0 on error
@note Despite its name, this telecommand does not download any files nor write to LittleFS.
adcs_download_sd_file_by_checksum
Arguments:
- The CRC16 checksum of the file as two hex bytes in order (e.g. pass checksum 0x07f1 as "07 f1")
Full docstring:
@brief Telecommand: Download a specific file from the ADCS SD card by its checksum.
@param args_str
- Arg 0: The CRC16 checksum of the file as two hex bytes in order (e.g. pass checksum 0x07f1 as "07 f1")
@return 0 on success, >0 on error
@example For checksum 0x07f1, the telecommand is: CTS1+adcs_download_sd_file_by_checksum(07 f1)
and the file will be downloaded as: `ADCS/log_07f1.TLM` (if it's a telemetry file).
@details This command writes a file to LittleFS in the `/ADCS/` directory, identified
by the file's checksum. For example, "ADCS/log_%x.TLM", "ADCS/img_%x.jpg", "ADCS/img_%x.bmp",
where %x is the file's CRC16 checksum in lowercase hex.
adcs_download_sd_file_by_index
Arguments:
- The index of the file to download
Full docstring:
@brief Telecommand: Download a specific file from the ADCS SD card by its index
@param args_str
- Arg 0: The index of the file to download
@return 0 on success, >0 on error
@details This command writes a file to LittleFS in the `/ADCS/` directory, identified
by the file's checksum. For example, "ADCS/log_%x.TLM", "ADCS/img_%x.jpg", "ADCS/img_%x.bmp",
where %x is the file's CRC16 checksum in lowercase hex.
adcs_enter_low_power_mode
Arguments:
- Enable stable attitude mode. 1 to keep the attitude of the satellite stable (costs average 250 mW, maximum 1 W extra), 0 to disable control entirely (satellite will slowly start to tumble).
Full docstring:
@brief Telecommand: Put the ADCS in low-power mode, with only essential component power.
@param args_str
- Arg 0: Enable stable attitude mode. 1 to keep the attitude of the satellite stable (costs average 250 mW, maximum 1 W extra), 0 to disable control entirely (satellite will slowly start to tumble).
@return 0 on success, >0 on error
adcs_erase_sd_file_by_checksum
Arguments:
- CRC16 checksum of the file as two hex bytes in order (e.g. pass checksum 0x07f1 as "07 f1")
Full docstring:
@brief Telecommand: Instruct the ADCS to erase a file from the SD card
@param args_str
- Arg 0: CRC16 checksum of the file as two hex bytes in order (e.g. pass checksum 0x07f1 as "07 f1")
@return 0 on success, >0 on error
adcs_erase_sd_file_by_index
Arguments:
- Index of the file to erase
Full docstring:
@brief Telecommand: Instruct the ADCS to erase a file from the SD card
@param args_str
- Arg 0: Index of the file to erase
@return 0 on success, >0 on error
adcs_estimate_angular_rates
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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_exit_bootloader
Full docstring:
@brief Telecommand: If the ADCS is currently stuck in the bootloader, run the internal flash program (CubeACP) to exit the bootloader
@note This command will do nothing if not in the bootloader
@param args_str
- No arguments for this command
@return 0 on success, >0 on error
adcs_fine_sun_vector
Full docstring:
@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_format_sd
Full docstring:
@brief Telecommand: Instruct the ADCS to format the SD card
@param args_str
- No arguments for this command
@return 0 on success, >0 on error
adcs_generic_bootloader_command
Arguments:
- 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)
Full docstring:
@brief Telecommand: execute a generic command on the ADCS bootloader
@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)
@note All hex bytes must be two-digit (e.g. 00 instead of 0); for zero-parameter commands, use 00
@return 0 on success, >0 on error
adcs_generic_command
Arguments:
- 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)
Full docstring:
@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)
@note All hex bytes must be two-digit (e.g. 00 instead of 0); for zero-parameter commands, use 00
@return 0 on success, >0 on error
adcs_generic_telemetry_request
Arguments:
- 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)
Full docstring:
@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
adcs_get_augmented_sgp4_params
Full docstring:
@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
Full docstring:
@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_cubesense_currents
Full docstring:
@brief Telecommand: Request the CubeSense current values from the ADCS
@param args_str
- No arguments for this command
@return 0 on success, >0 on error
adcs_get_current_state_1
Full docstring:
@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_current_unix_time
Full docstring:
@brief Telecommand: Retrieve the current ADCS Unix epoch time
@param args_str
- No arguments for this command
@return 0 on success, >0 on error
adcs_get_estimation_params
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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_misc_currents
Full docstring:
@brief Telecommand: Request the CubeStar (unused) and magnetorquer current values as well as the microcontroller temperature value from the ADCS
@param args_str
- No arguments for this command
@return 0 on success, >0 on error
adcs_get_power_control
Full docstring:
@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_rate_gyro_config
Full docstring:
@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
Full docstring:
@brief Telecommand: Request the raw magnetometer values from the ADCS.
@note Values are given as raw ADC values; use adcs_get_magnetic_field_vector for calibrated values
@param args_str
- No arguments for this command
@return 0 on success, >0 on error
adcs_get_sd_log_config
Arguments:
- which log to retrieve the configuration for (1 or 2)
Full docstring:
@brief Telecommand: Retrieve the current ADCS SD log configuration
@param args_str
- Arg 0: which log to retrieve the configuration for (1 or 2)
@return 0 on success, >0 on error
adcs_get_sgp4_orbit_params
Full docstring:
@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_tracking_controller_target_reference
Full docstring:
@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_unix_time_save_mode
Full docstring:
@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_currents
Full docstring:
@brief Telecommand: Request the reaction wheel current values from the ADCS
@param args_str
- No arguments for this command
@return 0 on success, >0 on error
adcs_get_wheel_speed
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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_request_commissioning_telemetry
Arguments:
- Which commissioning step to request telemetry for (1-18)
- Log number (1 or 2)
- Destination SD card (0 = primary, 1 = secondary)
Full docstring:
@brief Telecommand: Request commissioning telemetry from the ADCS and save it to the onboard SD card
@param args_str
- Arg 0: Which commissioning step to request telemetry for (1-18)
- Arg 1: Log number (1 or 2)
- Arg 2: Destination SD card (0 = primary, 1 = secondary)
@return 0 on success, >0 on error
adcs_reset
Full docstring:
@brief Telecommand: Request the given telemetry data from the ADCS
@note The ADCS will become unresponsive after sending this command for at least 15 seconds.
@param args_str
- No arguments for this command
@return 0 on success, >0 on error
adcs_run_once
Full docstring:
@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_save_config
Full docstring:
@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_image_to_sd
Arguments:
- (int) Which camera to save the image from; can be Camera 1 (0), Camera 2 (1), or Star (2)
- (int) Resolution of the image to save; can be 1024x1024 (0), 512x512 (1), 256x256 (2), 128x128 (3), or 64x64 (4)
Full docstring:
@brief Telecommand: Save an image to the ADCS onboard SD card
@param args_str
- Arg 0: (int) Which camera to save the image from; can be Camera 1 (0), Camera 2 (1), or Star (2)
- Arg 1: (int) Resolution of the image to save; can be 1024x1024 (0), 512x512 (1), 256x256 (2), 128x128 (3), or 64x64 (4)
@return 0 on success, >0 on error
adcs_save_orbit_params
Full docstring:
@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
Arguments:
- 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)
Full docstring:
@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_set_commanded_attitude_angles
Arguments:
- x attitude angle (double)
- y attitude angle (double)
- z attitude angle (double)
Full docstring:
@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_commissioning_modes
Arguments:
- Which commissioning step to set the modes for (1-18)
- Timeout in seconds before reverting to no control (0 = indefinite)
Full docstring:
@brief Telecommand: Set the run, power control, estimation, and control parameters for a given commissioning step
@note If a commissioning step requires other steps such as estimation parameters or TLMs, those must be supplied separately.
@param args_str
- Arg 0: Which commissioning step to set the modes for (1-18)
- Arg 1: Timeout in seconds before reverting to no control (0 = indefinite)
@return 0 on success, >0 on error
adcs_set_estimation_params
Arguments:
- 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)
- error_counter_reset_period_min (uint8; period after which a node's power cycle reset counter is cleared if no errors occurred)
Full docstring:
@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: error_counter_reset_period_min (uint8; period after which a node's power cycle reset counter is cleared if no errors occurred)
@return 0 on success, >0 on error
adcs_set_magnetometer_config
Arguments:
- 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)
Full docstring:
@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_set_magnetometer_mode
Arguments:
- magnetometer mode to set (0 = main sampled by Signal MCU, 1 = redundant sampled by Signal MCU, 2 = main sampled by Motor MCU, 3 = none)
Full docstring:
@brief Telecommand: Set the magnetometer mode of the ADCS
@param args_str
- Arg 0: magnetometer mode to set (0 = main sampled by Signal MCU, 1 = redundant sampled by Signal MCU, 2 = main sampled by Motor MCU, 3 = none)
@return 0 on success, >0 on error
adcs_set_magnetorquer_output
Arguments:
- magnetorquer x duty cycle (double)
- magnetorquer y duty cycle (double)
- magnetorquer z duty cycle (double)
Full docstring:
@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_set_power_control
Arguments:
- CubeControl signal power control mode
- CubeControl motor power control mode
- CubeSense 1 power control mode
- CubeSense 2 power control mode
- CubeStar power control mode
- CubeWheel 1 power control mode
- CubeWheel 2 power control mode
- CubeWheel 3 power control mode
- Motor power control mode
- GPS power control mode
Full docstring:
@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: CubeControl signal power control mode
- Arg 1: CubeControl motor power control mode
- Arg 2: CubeSense 1 power control mode
- Arg 3: CubeSense 2 power control mode
- Arg 4: CubeStar power control mode
- Arg 5: CubeWheel 1 power control mode
- Arg 6: CubeWheel 2 power control mode
- Arg 7: CubeWheel 3 power control mode
- Arg 8: Motor power control mode
- Arg 9: GPS power control mode
@return 0 on success, >0 on error
adcs_set_rate_gyro_config
Arguments:
- 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)
Full docstring:
@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_set_run_mode
Arguments:
- run mode to set; can be can be off (0), enabled (1), triggered (2), or simulation (3)
Full docstring:
@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_set_sd_log_config
Arguments:
- which_log; 1 or 2; which specific log number to log to the SD card
- log_array; Hex array of bitmasks for log config (10 hex bytes)
- log_period; Period to log data to the SD card; if zero, then disable logging
- which_sd; Which SD card to log to, 0 for primary, 1 for secondary
Full docstring:
@brief Telecommand: Repeatedly log given data from an SD card
@param args_str
- Arg 0: which_log; 1 or 2; which specific log number to log to the SD card
- Arg 1: log_array; Hex array of bitmasks for log config (10 hex bytes)
- Arg 2: log_period; Period to log data to the SD card; if zero, then disable logging
- Arg 3: which_sd; Which SD card to log to, 0 for primary, 1 for secondary
@return 0 on success, >0 on error
adcs_set_sgp4_orbit_params
Arguments:
- 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)
Full docstring:
@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_set_tracking_controller_target_reference
Arguments:
- longitude (double)
- latitude (double)
- altitude (double)
Full docstring:
@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_set_unix_time_save_mode
Arguments:
- 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 (in seconds)
Full docstring:
@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 (in seconds)
@return 0 on success, >0 on error
adcs_set_wheel_speed
Arguments:
- wheel speed x value
- wheel speed y value
- wheel speed z value
Full docstring:
@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_synchronize_unix_time
Full docstring:
@brief Telecommand: Synchronize the current ADCS Unix epoch time
@param args_str
- No arguments for this command
@return 0 on success, >0 on error
adcs_track_sun
Full docstring:
@brief Telecommand: Automatically track the sun with the ADCS.
@note The satellite must be already in Y-Momentum mode (i.e. stable attitude) to do this successfully. Rate Gyro Offsets must be set.
@param args_str
- No arguments for this command
@return 0 on success, >0 on error
agenda_delete_all
Full docstring:
@brief Telecommand: Delete all agenda entries.
@param args_str No arguments needed
@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_name
Arguments:
- telecommand name (string) - The name of the telecommand function in the agenda to delete. (e.g, hello_world)
Full docstring:
@brief Telecommand: Delete all agenda entries with a given 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 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_delete_by_tssent
Arguments:
- Timestamp sent (uint64_t) - The tssent timestamp of the agenda entry to delete.
Full docstring:
@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 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_enqueue_from_file
Arguments:
- File name (string) - The name of the file to enqueue telecommands from.
- min_tsexec_inclusive (u64) - Filter to @tsexec >= value (nominal: 0)
- max_tsexec_exclusive (u64) - Filter to @tsexec < value (set to 0 for no filter)
Full docstring:
@brief Telecommand: Enqueue telecommands from a file.
@param args_str
- Arg 0: File name (string) - The name of the file to enqueue telecommands from.
- Arg 1: min_tsexec_inclusive (u64) - Filter to @tsexec >= value (nominal: 0)
- Arg 2: max_tsexec_exclusive (u64) - Filter to @tsexec < value (set to 0 for no filter)
@return 0 on success, > 0 on error
agenda_fetch_json_grouped
Full docstring:
@brief Fetches the active agendas and writes a minified JSON dict-of-lists to the response buffer.
@param args_str No arguments.
@param response_output_buf Buffer to write the JSON output to.
@param response_output_buf_size Size of the response buffer.
@return 0 on success, 1 if there are no pending entries, 2 if the buffer was too small (agenda too long).
agenda_fetch_logged_jsonl
Full docstring:
@brief Telecommand: Fetch all pending agenda items, and log them each as JSONL
@param args_str No arguments.
@return 0 on success, 1 if there are no active pending agenda items.
ant_arm_antenna_system
Arguments:
- specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either "A" or "B"
Full docstring:
@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_cancel_deployment_system_activation
Arguments:
- specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either "A" or "B"
Full docstring:
@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_deploy_antenna
Arguments:
- 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
Full docstring:
@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_deploy_antenna_with_override
Arguments:
- 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
Full docstring:
@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_disarm_antenna_system
Arguments:
- specifies which mcu on the antenna deployment system to disarm, and which i2c bus to use
Full docstring:
@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_measure_temp
Arguments:
- specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either "A" or "B"
Full docstring:
@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_antenna_deployment_activation_count
Arguments:
- 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
Full docstring:
@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
Arguments:
- 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
Full docstring:
@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
ant_report_deployment_status
Arguments:
- specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either "A" or "B"
Full docstring:
@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_reset
| Field | Value |
| Function | TCMDEXEC_ant_reset |
| Number of Arguments | 1 |
| Readiness Level | FOR_OPERATION |
Arguments:
- specifies which mcu on the antenna deployment system to transmit to, and which i2c bus to use. Pass either "A" or "B"
Full docstring:
@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_start_automated_antenna_deployment
Arguments:
- 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
Full docstring:
@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
available_telecommands
boom_deploy_timed
Arguments:
- Which boom deployment channel (1=CTRL_1 or 2=CTRL_2), or 0 for both.
- Duration (milliseconds), less than 14.1 seconds (<=14100 ms)
Full docstring:
@brief Activate the burn wire for the specified duration.
@param args_str
- Arg 0: Which boom deployment channel (1=CTRL_1 or 2=CTRL_2), or 0 for both.
- Arg 1: Duration (milliseconds), less than 14.1 seconds (<=14100 ms)
@return 0 on success, 1-2 on parsing error, 20 on EPS failure
@note Does not enable the EPS channel. You must manually enable the EPS channel before
calling this function.
@note If you need longer than the max duration, you can of course call this function
multiple times back-to-back, relying on the heat capacity of the resistors to stay hot.
boom_self_check
Full docstring:
@brief Run the self-check on the boom deployment system.
@param args_str None.
@return 0 on success, >0 on error.
@note If this function glitches (which it shouldn't/doesn't), it has the potential to deploy the boom.
bulkup16
| Field | Value |
| Function | TCMDEXEC_bulkup16 |
| Number of Arguments | 1 |
| Readiness Level | FOR_OPERATION |
Arguments:
- Hex string (e.g. "DEADBEEF" or "DE AD BE EF")
Full docstring:
@brief Telecommand: Write hex bytes to the currently open bulk uplink file
@param args_str
- Arg 0: Hex string (e.g. "DEADBEEF" or "DE AD BE EF")
@note This is an alias for the `comms_bulk_uplink_write_bytes_hex` telecommand.
This is one of very few telecommands with short aliases, as it allows more data per command.
bulkup64
| Field | Value |
| Function | TCMDEXEC_bulkup64 |
| Number of Arguments | 1 |
| Readiness Level | FOR_OPERATION |
Arguments:
- Base64 string (e.g. "SGVsbG8=" converts to ASCII "Hello")
Full docstring:
@brief Telecommand: Write Base64 bytes to the currently open bulk uplink file.
@param args_str
- Arg 0: Base64 string (e.g. "SGVsbG8=" converts to ASCII "Hello")
@note This is an alias for the `comms_bulk_uplink_write_bytes_base64` telecommand.
This is one of very few telecommands with short aliases, as it allows more data per command.
camera_capture
Arguments:
- filename to save the image to (max 32 chars)
- lighting mode (single character: d,m,n,s)
Full docstring:
@brief Send telecommand to camera and capture an image. RUN CAM_SETUP BEFORE THIS EVERY TIME!
@note This command disables the EPS power channel afterwards.
@param args_str
- Arg 0: filename to save the image to (max 32 chars)
- Arg 1: lighting mode (single character: d,m,n,s)
@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
@note Lighting modes:
d - daylight ambient light
m - medium ambient light
n - night ambient light
s - solar sail contrast and light
camera_change_baud_rate
Arguments:
- Baudrate to change to (bits per second). 10 options from 1200 to 921600.
Full docstring:
@brief Debugging only. Set the baud rate of the camera to the specified value. Use `camera_setup` normally.
@param args_str
- Arg 1: Baudrate to change to (bits per second). 10 options from 1200 to 921600.
@return 0 if successful, >0 if an error occurred
camera_setup
Full docstring:
@brief Set up the camera by powering on EPS channel and changing the baudrate to 230400.
@param args_str
@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
camera_test
| Field | Value |
| Function | TCMDEXEC_camera_test |
| Number of Arguments | 0 |
| Readiness Level | FOR_RECOVERY_OR_EXPERT |
Full docstring:
@brief Send the 't' test command to the camera, and check if the response is valid.
@param args_str
@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
comms_bulk_file_downlink_pause
Full docstring:
@brief Telecommand: Pause bulk file downlink
@param args_str (unused)
comms_bulk_file_downlink_resume
comms_bulk_file_downlink_start
Arguments:
- File path to downlink as string
- Start offset in file (uint32)
- The maximum number of bytes to downlink. Maximum value is 1000000 (1 MB) by default, for safety (to avoid a very very long-running downlink chain). Values >1 MB will be limited to 1 MB, and value 0 will be set to 1 MB.
Full docstring:
@brief Initiate a bulk file downlink over the UHF radio.
@param args_str
- Arg 0: File path to downlink as string
- Arg 1: Start offset in file (uint32)
- Arg 2: The maximum number of bytes to downlink. Maximum value is 1000000 (1 MB) by default, for safety (to avoid a very very long-running downlink chain). Values >1 MB will be limited to 1 MB, and value 0 will be set to 1 MB.
@return 0 on success. Non-zero on failure. -2 = File does not exist.
@note 1 MB takes about 15 minutes to downlink at 9600 baud.
@note This function is safe to call at any point (including mid-downlink, or mid-pause).
It will close the previous file and start a new downlink.
comms_bulk_uplink_close_file
Full docstring:
@brief Telecommand: Close the currently open bulk uplink file
@param args_str No arguments
comms_bulk_uplink_open_file
Arguments:
- File path as string
- Mode enum as string: "truncate" or "append" (case-insensitive)
Full docstring:
@brief Telecommand: Open a file for bulk uplink
@param args_str
- Arg 0: File path as string
- Arg 1: Mode enum as string: "truncate" or "append" (case-insensitive)
comms_bulk_uplink_seek
Arguments:
- New byte offset from start of file (uint64, must fit uint32)
Full docstring:
@brief Telecommand: Seek to a new position in the currently open bulk uplink file
@param args_str
- Arg 0: New byte offset from start of file (uint64, must fit uint32)
comms_bulk_uplink_write_bytes_base64
Arguments:
- Base64 string (e.g. "SGVsbG8=" converts to ASCII "Hello")
Full docstring:
@brief Telecommand: Write Base64 bytes to the currently open bulk uplink file.
@param args_str
- Arg 0: Base64 string (e.g. "SGVsbG8=" converts to ASCII "Hello")
@note This telecommand has a short-form alias "bulkup64".
comms_bulk_uplink_write_bytes_hex
Arguments:
- Hex string (e.g. "DEADBEEF" or "DE AD BE EF")
Full docstring:
@brief Telecommand: Write hex bytes to the currently open bulk uplink file.
@param args_str
- Arg 0: Hex string (e.g. "DEADBEEF" or "DE AD BE EF")
@note This telecommand has a short-form alias "bulkup16".
comms_get_rf_switch_info
Full docstring:
@brief Gets the current RF switch control mode and the current antenna state.
@param args_str No args.
@return
comms_set_rf_switch_control_mode
Arguments:
- Enum: "toggle_before_beacon" (default), "ant1", "ant2", "adcs", "adcs_flipped". Case-insensitive.
Full docstring:
@brief Sets the state of the dipole switch on the OBC to either Antenna 1 or Antenna 2.
@param args_str
- Arg 0: Enum: "toggle_before_beacon" (default), "ant1", "ant2", "adcs", "adcs_flipped". Case-insensitive.
@return 0 on success, 1 on error.
config_get_all_int_vars_json
Full docstring:
@brief Get all int configuration variables, as JSON. Each variable is a key-value pair in a single JSON dict.
@param args_str No arguments.
@return 0 if successful, >0 if an error occurred
config_get_all_vars_jsonl
Full docstring:
@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
config_get_int_var_json
Arguments:
- variable name
Full docstring:
@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
Arguments:
- variable name
Full docstring:
@brief Get a string configuration variable
@param args_str
- Arg 0: variable name
@return 0 if successful, >0 if an error occurred
config_set_int_var
Arguments:
- variable name
- new value
Full docstring:
@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
Arguments:
- variable name
- new value
Full docstring:
@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
core_system_stats
Full docstring:
@brief Get many essential system stats as a JSON dict.
@param args_str No arguments.
@return 0 on success. Cannot fail.
correct_system_time
Arguments:
- Correction time in milliseconds (int64_t). Positive = forward in time, negative = backward in time.
Full docstring:
@brief Adjust the system time by a correction offset in ms.
@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
@note Math: new_system_time_ms = current_system_time_ms + correction_time_ms
demo_blocking_delay
Arguments:
- delay_ms (uint64_t) - The number of milliseconds to delay for. <=300_000ms.
Full docstring:
@brief Delay for a specified number of milliseconds, for testing purposes, using HAL_Delay.
@param args_str 1 argument: delay_ms (uint64_t)
- Arg 0: delay_ms (uint64_t) - The number of milliseconds to delay for. <=300_000ms.
@return 0 on success, 1 on error
@note This is most useful for testing/triggering the watchdog timer.
demo_os_delay
Arguments:
- delay_ms (uint64_t) - The number of milliseconds to delay for. <=300_000ms.
Full docstring:
@brief Delay for a specified number of milliseconds, for testing purposes, using osDelay.
@param args_str 1 argument: delay_ms (uint64_t)
- Arg 0: delay_ms (uint64_t) - The number of milliseconds to delay for. <=300_000ms.
@return 0 on success, 1 on error
@note This is most useful for testing/triggering the watchdog timer.
echo_back_args
Arguments:
- The string to echo back.
Full docstring:
@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
Arguments:
- The first integer to echo back.
- The second integer to echo back.
- The third integer to echo back.
Full docstring:
@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.
eps_cancel_operation
Full docstring:
@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_get_current_battery_percent
Full docstring:
@brief Get current battery voltage and percent from EPS's PBU.
eps_get_enabled_channels_json
eps_get_pbu_abf_placed_state_json
Full docstring:
@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_pbu_housekeeping_data_eng_json
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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
Full docstring:
@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_pdu_active_channels_data_json
Full docstring:
@brief Get the EPS PDU (Power Distribution Unit) housekeeping data, and display it as a short JSON string.
@return 0 on success, >0 on failure.
@note Emphasizes total info, and enabled channels only.
eps_get_pdu_active_channels_data_run_avg_json
Full docstring:
@brief Get the EPS PDU (Power Distribution Unit) housekeeping data running average, and display it as a short JSON string.
@return 0 on success, >0 on failure.
@note Emphasizes total info, and enabled channels only.
eps_get_pdu_data_for_channel_json
Arguments:
- The channel name or number (case-insensitive string).
Full docstring:
@brief Gets the Voltage, Current, and Power for a single channel on the EPS.
@param args_str
- Arg 0: The channel name or number (case-insensitive string).
@return 0 on success, >0 on failure.
@note Channel name argument: A lowercase c-string of the channel name (e.g., "mpi"), or a number
representing the channel number (e.g., "1" or "16").
Valid string values: "vbatt_stack", "stack_5v", "stack_3v3", "camera", "uhf_antenna_deploy",
"gnss", "mpi_5v", "mpi_12v", "boom".
eps_get_pdu_housekeeping_data_eng_json
Full docstring:
@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
Full docstring:
@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_pdu_overcurrent_fault_state_json
Full docstring:
@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_piu_housekeeping_data_eng_json
Full docstring:
@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
Full docstring:
@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.
eps_get_system_status_json
Full docstring:
@brief Get the EPS system status, and display it as a JSON string.
@return 0 on success, >0 on failure.
eps_no_operation
Full docstring:
@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_power_management_set_current_threshold
Arguments:
- The channel name or number (case-insensitive string).
- Threshold current (in mA) to set.
Full docstring:
@brief Sets the EPS power managements max sustained current for the specified channel.
@param args_str
- Arg 0: The channel name or number (case-insensitive string).
- Arg 1: Threshold current (in mA) to set.
@return 0 on success, >0 on failure
@note Valid string values (Arg 0): "vbatt_stack", "stack_5v", "stack_3v3", "camera",
"uhf_antenna_deploy", "gnss", "mpi_5v", "mpi_12v", "boom".
eps_set_channel_enabled
Arguments:
- The channel name or number (case-insensitive string).
- 1 to enable (power on), 0 to disable (power off)
Full docstring:
@brief Sets the EPS channel to be enabled (on) or disabled (off).
@param args_str
- Arg 0: The channel name or number (case-insensitive string).
- Arg 1: 1 to enable (power on), 0 to disable (power off)
@return 0 on success, >0 on failure
@note Channel name argument: A lowercase c-string of the channel name (e.g., "mpi"), or a number
representing the channel number (e.g., "1" or "16").
Valid string values: "vbatt_stack", "stack_5v", "stack_3v3", "camera", "uhf_antenna_deploy",
"gnss", "mpi_5v", "mpi_12v", "boom".
eps_switch_to_mode
Arguments:
- New mode to switch to. Either "nominal" or "safety". Case-insensitive.
Full docstring:
@brief Switches the EPS to "nominal" or "safety" mode.
@param args_str
- Arg 0: New mode to switch to. Either "nominal" or "safety". Case-insensitive.
@return 0 on success, 1 on failure.
@note See EPS Software ICD, Page 12, Section 3 (Functional Description) for state/mode definitions.
eps_system_reset
Full docstring:
@brief Resets the EPS system.
@param args_str No arguments.
@return 0 on success, 1 on failure.
eps_watchdog
Full docstring:
@brief Triggers/services the EPS watchdog. No args.
@param args_str No arguments.
@return 0 on success, 1 on failure.
exec_blob_from_fs
Arguments:
- File name of the blob
- Where to load blob (0=malloc, 1=mpi_buffer_one, 2=mpi_buffer_two)
- Argument to pass to the blob function (e.g., another filename)
Full docstring:
@brief Executes an arbitrary blob/program from the filesystem.
@param args_str
- Arg 0: File name of the blob
- Arg 1: Where to load blob (0=malloc, 1=mpi_buffer_one, 2=mpi_buffer_two)
- Arg 2: Argument to pass to the blob function (e.g., another filename)
@param response_output_buf The blob optionally writes its intermediate workings and results to this buffer.
@return 99 on pre-blob execution error. Otherwise, blob return value (presumably 0 on success).
@details Refer to `misc_tools/exec_blob/README.md` for more information on how to use this complex telecommand.
flash_activate_each_cs
Full docstring:
@brief Telecommand: Read bytes as hex from a flash address
@param args_str No args.
@return 0 always
flash_benchmark_erase_write_read
Arguments:
- Chip Number (CS number) as uint
- Test Data Address as uint
- Test Data Length as uint
Full docstring:
@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_each_is_reachable
Full docstring:
@brief Telecommand: Read bytes as hex from a flash address
@param args_str No args.
@return 0 always
flash_erase
Arguments:
- Chip Number (CS number) as uint
- Page number as uint
Full docstring:
@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_force_corrupt_filesystem
Arguments:
- Chip Number (CS number) as uint
Full docstring:
@brief Force the LittleFS filesystem to be corrupted by modifying the underlying storage on a flash memory module.
@param args_str
- Arg 0: Chip Number (CS number) as uint
@return 0 on success (forced corruption). >0 on error.
flash_read_hex
Arguments:
- Chip Number (CS number) as uint
- Page number as uint
- Number of bytes to read as uint
Full docstring:
@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_read_status_register
Arguments:
- Chip Number (CS number) as uint
Full docstring:
@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_reset
Arguments:
- Chip Number (CS number) as uint
Full docstring:
@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_write_hex
Arguments:
- Chip Number (CS number) as uint
- Page number as uint
- Hex string of bytes to write (any case, allows space/underscore separators)
Full docstring:
@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
freertos_demo_stack_usage
Arguments:
- num_bytes (uint64_t) - The number of elements to allocate in the VLA. <=1_000_000.
Full docstring:
@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
freetos_list_tasks_jsonl
Full docstring:
@brief Telecommand that return metadata regarding Tasks from FreeRTOS
@param args_str No arguments expected
@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)
fs_benchmark_write_read
Arguments:
- Write chunk size (bytes)
- Write chunk count
Full docstring:
@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.
fs_compress_file_with_heatshrink
Arguments:
- Input file path
- Output file path (e.g., suffix with ".hs")
- window_sz2 (min 4, recommended 8, max 15, like CLI -w arg)
- lookahead_sz2 (min 3, recommended 4, less than window_sz2, like CLI -l arg)
Full docstring:
@brief Compress a file using heatshrink.
@param args_str
- Arg 0: Input file path
- Arg 1: Output file path (e.g., suffix with ".hs")
- Arg 2: window_sz2 (min 4, recommended 8, max 15, like CLI -w arg)
- Arg 3: lookahead_sz2 (min 3, recommended 4, less than window_sz2, like CLI -l arg)
@param response_output_buf Outputs the compression ratio as a message.
@return 0 on success. 1 on arg parsing errors.
@note Can cause system to crash and reboot. Safe to use, but just be aware.
@note Requires that `window_sz2 > lookahead_sz2`.
@note Heatshrink does NOT embed the window sizes in the data.
You must remember them, and use them when decompressing.
fs_count_hex_occurrences
Arguments:
- File path as string (haystack)
- Hex string to search for (e.g. "DEADBEEF")
Full docstring:
@brief Count hex byte sequence occurrences in a file
@param args_str
- Arg 0: File path as string (haystack)
- Arg 1: Hex string to search for (e.g. "DEADBEEF")
fs_count_str_occurrences
Arguments:
- File path as string (haystack)
- Needle string to search for
Full docstring:
@brief Count string occurrences in a file
@param args_str
- Arg 0: File path as string (haystack)
- Arg 1: Needle string to search for
fs_delete_dir
Arguments:
- Directory name to be deleted
Full docstring:
@brief Telecommand: Deletes a specified directory, including all subfolders/subfiles.
@param args_str
- Arg 0: Directory name to be deleted
@note Do not add quotations around the argument, write as is.
fs_delete_file
Arguments:
- File name to be deleted
Full docstring:
@brief Telecommand: Deletes a specified file in LittleFS
@param args_str
- Arg 0: File name to be deleted
@note Do not add quotations around the argument, write as is.
fs_demo_write_random_data
Arguments:
- File path as string
- File size in bytes (approx., best-effort)
- Amount of randomness - 0 = no randomness, 1 = highly predictable, 255 = very random
Full docstring:
@brief Write a file with pseudorandom data to LittleFS.
@param args_str
- Arg 0: File path as string
- Arg 1: File size in bytes (approx., best-effort)
- Arg 2: Amount of randomness - 0 = no randomness, 1 = highly predictable, 255 = very random
@param response_output_buf
@param response_output_buf_len
@return 0 on success, >0 on error
fs_demo_write_then_read
Arguments:
- File path as string
Full docstring:
@brief Writes a file to LittleFS, then reads it back.
@param args_str
- Arg 0: File path as string
@param response_output_buf
@param response_output_buf_len
@return
fs_find_nth_hex_occurrence
Arguments:
- File path as string (haystack)
- Hex string to search for
- N (1-based)
Full docstring:
@brief Find Nth hex byte sequence occurrence in a file
@param args_str
- Arg 0: File path as string (haystack)
- Arg 1: Hex string to search for
- Arg 2: N (1-based)
fs_find_nth_str_occurrence
Arguments:
- File path as string (haystack)
- Needle string to search for
- N (1-based)
Full docstring:
@brief Find Nth string occurrence in a file
@param args_str
- Arg 0: File path as string (haystack)
- Arg 1: Needle string to search for
- Arg 2: N (1-based)
fs_format_storage
Full docstring:
@brief Format the LittleFS storage. ERASES ALL FILES. Unmounts the filesystem if necessary.
@return LFS errror code from LFS_format().
fs_get_filesystem_stats_json
Full docstring:
@brief Generate a JSON string containing filesystem stats and debugging info.
@param args_str No arguments.
@return 0 on success, 1 on error.
@note Used space may be approximate, due to the nature of LittleFS Copy-on-Write (COW).
fs_list_directory
Arguments:
- Root Directory path as string
- (Offset) Number of entries to skip at the beginning
- (Count) Number entries to display
Full docstring:
@brief Telecommand: List all the files and directories within a given directory via log messages.
@note The directory contents are each listed in separate log messages. Logging must be enabled separately.
@note On success, the telecommand response is empty. Recommended to use `fs_list_directory_json` generally.
@param args_str
- Arg 0: Root Directory path as string
- Arg 1: (Offset) Number of entries to skip at the beginning
- Arg 2: (Count) Number entries to display
fs_list_directory_json
Arguments:
- Root Directory path as string
- (Offset) Number of entries to skip at the beginning
- (Count) Number entries to display
Full docstring:
@brief Telecommand: List all the files and directories within a given directory, as a JSON dict (key are paths, values are sizes)
@param args_str
- Arg 0: Root Directory path as string
- Arg 1: (Offset) Number of entries to skip at the beginning
- Arg 2: (Count) Number entries to display
@note In the resulting JSON, the JSON value of directories is "null".
fs_make_directory
Arguments:
- Directory Name as string (e.g., "/dir1", "/dir1/subdir1")
Full docstring:
@brief Telecommand: Create a directory
@param args_str
- Arg 0: Directory Name as string (e.g., "/dir1", "/dir1/subdir1")
fs_mount
| Field | Value |
| Function | TCMDEXEC_fs_mount |
| Number of Arguments | 0 |
| Readiness Level | FOR_OPERATION |
fs_read_file_hex
Arguments:
- File path as string
- Start offset (bytes). Nominally, pick 0.
- Length to read (bytes). 0 to read max.
Full docstring:
@brief Reads a file from LittleFS, and responds with its contents as 2-digit hex bytes (no spaces).
@param args_str
- Arg 0: File path as string
- Arg 1: Start offset (bytes). Nominally, pick 0.
- Arg 2: Length to read (bytes). 0 to read max.
@return 0 on success, >0 on error
fs_read_file_sha256_hash_json
Arguments:
- File path as string
- Start offset (bytes). Nominally, pick 0.
- Length to read (bytes). 0 to read max.
Full docstring:
@brief Calculates the SHA256 hash of a file in LittleFS and returns it as a little-endian hex string.
@param args_str
- Arg 0: File path as string
- Arg 1: Start offset (bytes). Nominally, pick 0.
- Arg 2: Length to read (bytes). 0 to read max.
@return 0 on success, >0 on error
fs_read_text_file
Arguments:
- File path as string
- Start offset (bytes). Nominally, pick 0.
- Length to read (bytes). 0 to read max.
Full docstring:
@brief Reads a file from LittleFS, and responds with its contents as a string.
@param args_str
- Arg 0: File path as string
- Arg 1: Start offset (bytes). Nominally, pick 0.
- Arg 2: Length to read (bytes). 0 to read max.
@return 0 on success, >0 on error
fs_unmount
fs_write_file_hex
Arguments:
- File path as string
- Offset within the file to start writing (uint64)
- Hex string to write to file (e.g., "DEADBEEF" or "DE AD BE EF")
Full docstring:
@brief Telecommand: Write hex data to a file in LittleFS with offset support
@param args_str
- Arg 0: File path as string
- Arg 1: Offset within the file to start writing (uint64)
- Arg 2: Hex string to write to file (e.g., "DEADBEEF" or "DE AD BE EF")
@note The maximum number of bytes that can be written is 105 bytes
fs_write_file_str
Arguments:
- File path as string
- String to write to file (up to 512 bytes)
Full docstring:
@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 (up to 512 bytes)
get_all_system_thermal_info
Full docstring:
@brief Get a variety of system thermal info as JSON.
@param args_str No arguments.
@return 0 on success.
@note Fields include OBC temp, antenna temps, solar panel generation, battery info.
@note The EPS_CHANNEL_3V3_UHF_ANTENNA_DEPLOY channel is powered off after,
even if it was powered on previously. Totally safe, but just an FYI.
get_system_time
gnss_disable_firehose_storage_mode
Full docstring:
@brief Disables the GNSS firehose storage mode (closes the firehose file).
@param args_str No args.
@return 0: Success, >0: Failure
@note This telecommand does not control EPS power. You must disable the GNSS power afterwards.
gnss_enable_firehose_storage_mode
Arguments:
- File name as a string
Full docstring:
@brief Enables storing data from GNSS into a file.
@param args_str
- Arg 0: File name as a string
@return 0: Success, >0: Failure
@details This feature is meant to be used in combination with the "log bestxyza ontime <seconds>" GNSS commands.
@example Enable power, enable "ontime" logs in the GNSS (using gnss_send_cmd_ascii), then enable this mode.
@note This telecommand does not control EPS power. You must enable the GNSS power first.
gnss_send_cmd_ascii
Arguments:
- Log command to be sent to GNSS eg "log bestxyza once" (string)
Full docstring:
@brief Send a command to the GNSS and receive the response as ASCII.
@param args_str
- Arg 0: Log command to be sent to GNSS eg "log bestxyza once" (string)
@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 error
gnss_send_cmd_ascii_get_response_hex
Arguments:
- Log command to be sent to GNSS eg "log bestxyzb once" (string)
Full docstring:
@brief Send a command to the GNSS (text) and receive the response as hex.
@param args_str
- Arg 0: Log command to be sent to GNSS eg "log bestxyzb once" (string)
@param response_output_buf The buffer to write the response to (output as hex)
@param response_output_buf_len The maximum length of the response_output_buf (its size)
@return 0 on success, > 0 error
hello_world
Full docstring:
@brief A simple telecommand that responds with "Hello, world!" (log message and TCMD response)
@param args_str No arguments expected
@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)
log_report_all_sink_enabled_states
Full docstring:
@brief Telecommand: Report all LOG sink enable states
log_report_all_system_file_logging_states
Full docstring:
@brief Telecommand: Report all LOG subsystem file logging states
log_report_messages_from_memory
Arguments:
- Offset of first log message to report (0 = most recent)
- Number of log messages to report (or 0 for all messages)
Full docstring:
@brief Telecommand: Report log messages from memory into response_output_buf (offset + count style)
@param args_str
- Arg 0: Offset of first log message to report (0 = most recent)
- Arg 1: Number of log messages to report (or 0 for all messages)
@note If offset is >= memory table size, offset is set to 0. If count is > memory table size, count is set to memory table size.
log_report_n_latest_messages_from_memory
Arguments:
- Number of latest log messages to report
Full docstring:
@brief Telecommand: Report the N latest log messages into response_output_buf
@param args_str
- Arg 0: Number of latest log messages to report
@note Recommended to use `log_report_messages_from_memory` instead.
log_set_sink_debugging_messages_state
Arguments:
- Sink enum
- State 0: disable debug messages, 1: enable debug messages
Full docstring:
@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
@details FrontierSat LOG sinks
LOG_SINK_UHF_RADIO = 1
LOG_SINK_FILE = 2
LOG_SINK_UMBILICAL_UART = 4
log_set_sink_enabled_state
Arguments:
- Sink enum value
- Enabled? 0: disable sink, 1: enable sink
Full docstring:
@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_debugging_messages_state
Arguments:
- Subsystem enum
- State 0: disable debug messages, 1: enable debug messages
Full docstring:
@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
@details FrontierSat LOG subsystems
LOG_SYSTEM_OBC = 1
LOG_SYSTEM_UHF_RADIO = 2
LOG_SYSTEM_UMBILICAL_UART = 4
LOG_SYSTEM_GNSS = 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_set_system_file_logging_enabled_state
Arguments:
- Subsystem enum value
- Enabled? 0: disable file logging, 1: enable file logging
Full docstring:
@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 subsystems
LOG_SYSTEM_OBC = 1
LOG_SYSTEM_UHF_RADIO = 2
LOG_SYSTEM_UMBILICAL_UART = 4
LOG_SYSTEM_GNSS = 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_set_system_severity_mask
Arguments:
- Subsystem enum
- severity mask
Full docstring:
@brief Telecommand: set the severity levels that a system will log
@param args_str
- Arg 0: Subsystem enum
- Arg 1: severity mask
@details Allows fine-grained control over what severities a subsystem will log
FrontierSat subsystems
LOG_SYSTEM_OBC = 1
LOG_SYSTEM_UHF_RADIO = 2
LOG_SYSTEM_UMBILICAL_UART = 4
LOG_SYSTEM_GNSS = 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 severity
LOG_SEVERITY_DEBUG = 1
LOG_SEVERITY_NORMAL = 2
LOG_SEVERITY_WARNING = 4
LOG_SEVERITY_ERROR = 8
LOG_SEVERITY_CRITICAL = 16
mpi_demo_tx_to_mpi
Full docstring:
@brief Sends a message over UART to the MPI.
@param args_str No args.
@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
mpi_disable_active_mode
Full docstring:
@brief Sets the state to not send or receive data from MPI.
@param args_str No args.
@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
mpi_enable_active_mode
Arguments:
- File name as a string
Full docstring:
@brief Enables systems to start receiving data actively from MPI and storing using LFS.
@param args_str
- Arg 0: File name as a string
@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
mpi_send_command_get_response_hex
Arguments:
- Hex-encoded string representing the configuration command + arguments (IF ANY) to send to the MPI, INCLUDING 'TC' (0x54 0x43)
Full docstring:
@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 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 error code
mpi_set_transceiver_mode
Arguments:
- The target mode - "MISO" (from MPI), "MOSI" (to MPI), "DUPLEX", or anything else disables it
Full docstring:
@brief Manually sets the MPI's UART transceiver state.
@param args_str
- Arg 0: The target mode - "MISO" (from MPI), "MOSI" (to MPI), "DUPLEX", or anything else disables it
@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
@note Nominally, not required. Useful for manually sending UART messages with `uart_send_hex()` tcmd.
obc_adc_read_vbat_voltage
Full docstring:
@brief Read the battery voltage using the ADC. Returns the result in mV. Voltage divider ratio is already applied.
@param args_str No arguments.
@return
obc_firmware_version
Full docstring:
@brief Get the currently-running OBC Firmware Version (build date/time, comment).
@param args_str No arguments.
@return 0 on success (cannot fail).
obc_get_rbf_state
obc_read_temperature
Full docstring:
@brief Reads the temperature from the STDS75DS2F in centi-Celsius.
@return 0 if successful, >0 if error.
@note Temperature range is -55 to 125 degrees celsius with +/- 3 degrees celsius accuracy over the whole range.
obc_read_temperature_complex
Arguments:
- Precision we want the temperature to be (9-12 bits).
Full docstring:
@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.
@note There are better ways to get the temperature.
obc_set_stm32_sysclk_to_hse
Full docstring:
@brief Change the STM32 SYSCLK clock from the HSI to the HSE.
@param args_str No arguments.
@return 0 on success.
@details On bootup, the OBC will use the HSI as its clock, as the HSE may have a PCB design
defect, where the output capacitance of the HSE clock is too high.
Running this command will switch the SYSCLK from the High-Speed Internal (HSI) at 16 MHz
to the probably-fine-but-maybe-questionable High-Speed External (HSE) clock at 25 MHz.
The main benefit is that the HSE clock is a Temperature-Compensated Crystal Oscillator (TXCO),
and thus maintains the system clock much more reliably.
@note To switch back to the HSI, simply reboot.
@note If the HSE fails, the Independent Watchdog will reset. Thus, this reconfiguration is low-risk.
reboot
| Field | Value |
| Function | TCMDEXEC_reboot |
| Number of Arguments | 0 |
| Readiness Level | FOR_OPERATION |
Full docstring:
@brief Reboot the OBC. Unmounts the filesystem first for safety.
@param args_str
@param response_output_buf
@param response_output_buf_len
@return
run_all_unit_tests
scan_i2c_bus
Arguments:
- I2C bus to scan (1-4)
Full docstring:
@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.
scan_i2c_bus_verbose
Arguments:
- I2C bus to scan (1-4)
Full docstring:
@brief Scans the I2C bus for devices. Prints out a grid of all devices, with addresses for those found.
@param args_str
- Arg 0: I2C bus to scan (1-4)
@return 0 if successful, 1 if error.
set_eps_time_based_on_obc_time
Full docstring:
@brief Sync's eps time to obc time (+/- 1 second)
@return 0 on success, >0 on failure.
set_obc_time_based_on_eps_time
Full docstring:
@brief Sync's obc time to eps time (+/- 1 second)
@return 0 on success, >0 on failure.
set_obc_time_based_on_gnss_pps
Full docstring:
@brief Corrects the OBC time based on the GNSS PPS signal. Very precise.
@param args_str No arguments.
@return 0 on success, >0 on failure.
@note Requires that the GNSS receiver's EPS channel is already powered on, and that a time fix is ready.
@note Requires an accurate GNSS time fix, and requires that `set_obc_time_based_on_gnss_time` has been
run recently (or that the OBC time is correct within 500ms based on another time source).
set_obc_time_based_on_gnss_time
Full docstring:
@brief Sync OBC time based on the GNSS time report (+/- ~100ms, based on system latency).
@param args_str No arguments.
@return 0 on success, >0 on failure.
@note Requires that the GNSS receiver's EPS channel is already powered on, and that a time fix is ready.
set_system_time
Arguments:
- Unix epoch time in milliseconds (uint64_t)
Full docstring:
@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
@note This function accounts for the unpredictable delay between telecommand reception and execution.
set_system_time_approx
Arguments:
- Unix epoch time in milliseconds (uint64_t)
Full docstring:
@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
@note This function is the naive/basic implementation that doesn't account for a delay
between telecommand reception and execution.
stm32_internal_flash_bank_erase
Arguments:
- Flash Bank to erase (1 or 2)
Full docstring:
@brief Erase an entire flash bank
@param args_str
- Arg 0: Flash Bank to erase (1 or 2)
@return 0 on success, > 0 on error
stm32_internal_flash_calculate_sha256
Arguments:
- Start address in flash memory as uint32_t
- Number of bytes to hash as uint32_t
Full docstring:
@brief Calculates the SHA256 hash of a range of STM32 internal flash.
@param args_str
- Arg 0: Start address in flash memory as uint32_t
- Arg 1: Number of bytes to hash as uint32_t
@param response_output_buf Outputs the SHA256 hash as hex (wrapped in JSON)
@return 0 on success, >0 on error
@note Common useful values:
- Start of BANK_1 (address): 0x08000000 = 134217728
- Start of BANK_2 (address): 0x08100000 = 135266304
- Length of each bank: 0x100000 = 1048576
stm32_internal_flash_get_active_flash_bank
Full docstring:
@brief Prints the active flash bank where the firmware boots from
@param response_output_buf Prints the active bank
stm32_internal_flash_get_option_bytes
Full docstring:
@brief Get the option bytes configuration from the stm32 internal flash memory
@param args_str No args
@return 0 on success, > 0 on error
stm32_internal_flash_page_erase
Arguments:
- Flash Bank to erase (1 or 2)
- The starting page to erase (0-255 for bank 1, 256-511 for bank 2)
- The number of pages to erase (1-256)
Full docstring:
@brief Erase a range of pages in the internal flash bank.
@param args_str
- Arg 0: Flash Bank to erase (1 or 2)
- Arg 1: The starting page to erase (0-255 for bank 1, 256-511 for bank 2)
- Arg 2: The number of pages to erase (1-256)
@return 0 on success, > 0 on error
stm32_internal_flash_read
Arguments:
- The address to start reading from in hex
- The number of bytes to read as a uint64_t
Full docstring:
@brief Read data from the internal flash bank
@param args_str
- Arg 0: The address to start reading from in hex
- Arg 1: The number of bytes to read as a uint64_t
@return 0 on success, > 0 on error
stm32_internal_flash_set_active_flash_bank
Arguments:
- A 1 or 2. 1 to switch to the application present in Flash Bank 1, 2 to switch to the application present in Flash Bank 2
Full docstring:
@brief Given a 1 or 2, switches to the respective flash bank and runs the application stored there if present.
Mostly useful for switching between 2 different version of the firmware (1 will be stored in Flash Bank 1, other will be stored in Flash Bank 2)
@param args_str
- Arg 0: A 1 or 2. 1 to switch to the application present in Flash Bank 1, 2 to switch to the application present in Flash Bank 2
@param response_output_buf Prints error if it occurs
@return 0 on success, > 0 otherwise
stm32_internal_flash_write
Arguments:
- Address to start writing from in hex format
- The data in hex format to write up to PAGESIZE bytes (0x1000 bytes)
Full docstring:
@brief Write data to the internal flash bank starting from address 0x08100000
@param args_str
- Arg 0: Address to start writing from in hex format
- Arg 1: The data in hex format to write up to PAGESIZE bytes (0x1000 bytes)
@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_write_file_to_internal_flash
Arguments:
- File name to read from LittleFS
- Length to read from the file (in bytes). The maximum length to read is 4096 bytes (4kB).
- Offset within the file to start reading (in bytes)
- Address in internal flash memory to write to (in base 10)
Full docstring:
@brief Telecommand: Write a file to internal flash memory from LittleFS.
@param args_str
- Arg 0: File name to read from LittleFS
- Arg 1: Length to read from the file (in bytes). The maximum length to read is 4096 bytes (4kB).
- Arg 2: Offset within the file to start reading (in bytes)
- Arg 3: Address in internal flash memory to write to (in base 10)
@note To use properly:
- The internal flash memory region must be erased before writing.
- The address must be in the main flash memory region (0x08000000 to 0x081FFFFF).
system_self_check_as_json
Full docstring:
@brief System self-check of all peripherals and systems.
@param args_str No arguments expected
@param response_output_buf Buffer is filled with a JSON list of strings of the FAILING checks
@return 0 regardless; see the response_output_buf for the results of the self-check.
@note Output is a JSON list of the failing checks (as strings). Returns 0 regardless.
system_self_check_failures_as_json
Full docstring:
@brief System self-check of all peripherals and systems.
@param args_str No arguments expected
@param response_output_buf Buffer is filled with a JSON list of strings of the FAILING checks
@return 0 regardless; see the response_output_buf for the results of the self-check.
@note Output is a JSON list of the failing checks (as strings). Returns 0 regardless.
uart_get_errors_json
uart_get_last_rx_times_json
Full docstring:
@brief Get a JSON dict of how long, in ms, SINCE each UART ISR handler was last triggered.
@note Uses placeholder "-99" to mean "never triggered". A value of 50 means that handler was last
triggered 50ms ago.
@note Intended for debugging and testing purposes, but safe to use in flight also.
uart_send_hex
Arguments:
- UART port name to send data to: MPI, GNSS, CAMERA, EPS (case insensitive)
- Data to be sent (bytes specified as hex)
Full docstring:
@brief Send arbitrary commands to a UART peripheral.
@param args_str
- Arg 0: UART port name to send data to: MPI, GNSS, CAMERA, EPS (case insensitive)
- Arg 1: Data to be sent (bytes specified as hex)
@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
@note This function doesn't toggle the EPS power lines for peripherals nor
the MPI's UART transceiver. Ensure they are powered on before using this function.
uart_send_hex_get_response_hex
Arguments:
- UART port name to send data to: MPI, GNSS, CAMERA, EPS (case insensitive)
- Data to be sent (bytes specified as hex)
Full docstring:
@brief Send arbitrary commands to a UART peripheral, and receive the response.
@param args_str
- Arg 0: UART port name to send data to: MPI, GNSS, CAMERA, EPS (case insensitive)
- Arg 1: Data to be sent (bytes specified as hex)
@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: Error parsing args, 2: Invalid uart port requested, 3: Error transmitting data,
4: Error receiving data, 5: Timeout waiting for response / No response, 6: Peripheral specific error,
7: Unhandled error
@note This function doesn't toggle the EPS power lines for peripherals. Ensure they are powered on before
using this function.
@note The camera UART port does not support receiving data in the function. TX only.
uart_send_str
Arguments:
- UART port name to send data to: MPI, GNSS, CAMERA, EPS (case insensitive)
- Data to be sent (bytes specified as a string)
Full docstring:
@brief Send arbitrary commands to a UART peripheral.
@param args_str
- Arg 0: UART port name to send data to: MPI, GNSS, CAMERA, EPS (case insensitive)
- Arg 1: Data to be sent (bytes specified as a string)
@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
@note This function doesn't toggle the EPS power lines for peripherals nor
the MPI's UART transceiver. Ensure they are powered on before using this function.
uart_set_baud_rate
Arguments:
- UART port name to set the baud rate for: MPI, GNSS, CAMERA, EPS, AX100, DEBUG (case insensitive)
- Baud rate to set the STM32 UART peripheral to (in bits per second). Common values are 9600, 115200, 230400, etc.
Full docstring:
@brief Set the STM32 UART peripheral's baud rate to a different value.
@param args_str
- Arg 0: UART port name to set the baud rate for: MPI, GNSS, CAMERA, EPS, AX100, DEBUG (case insensitive)
- Arg 1: Baud rate to set the STM32 UART peripheral to (in bits per second). Common values are 9600, 115200, 230400, etc.
@note This does not command the subsystem device to change its baud rate. This only updates the STM32.
@example If the GNSS receiver does a factory reset, its baud rate is set to a different value. This command
can be used to change the STM32's UART baud rate to match the GNSS receiver's default baud rate to recover it.
Configuration Variables
There are 28 integer and 4 string configuration variables.
Summary Table
Integer Configuration Variable Details
AX100_enable_downlink_inhibited_uart_logs
| Field | Value |
| Type | int |
| Default Value | 1 |
Docstring:
@brief When enabled, log messages like "Downlink inhibited: ..." will be sent to the Debug UART.
@note Logs are important to ensure that radio downlinks aren't sent before the antenna is deployed.
These logs get very annoying though, so they can be turned off with this variable.
@note Only useful for configuration in ground testing.
AX100_enable_downlink_uart_logs
| Field | Value |
| Type | int |
| Default Value | 0 |
Docstring:
@brief When enabled, the radio packets will be sent to the Debug UART for debugging purposes.
@note Only useful for configuration in ground testing.
COMMS_beacon_interval_ms
| Field | Value |
| Type | int |
| Default Value | 20000 |
Docstring:
@brief Interval between basic beacon packets, in ms.
@note Default: 20000 ms = 20 seconds (fastest rate we're globally authorized for).
COMMS_bulk_downlink_delay_per_packet_ms
| Field | Value |
| Type | int |
| Default Value | 208 |
Docstring:
@brief The period to wait between downlink packets.
@note A 250-byte packet at 9600 baud takes about 208 ms to transmit.
@example If you reconfigure the AX100 and increase the baudrate of the radio, decrease this value.
COMMS_max_duration_without_uplink_before_setting_default_rf_switch_mode_sec
| Field | Value |
| Type | int |
| Default Value | 900 |
Docstring:
@brief If the satellite goes this long without receiving an uplink, the
`COMMS_rf_switch_control_mode` will be set back to `TOGGLE_BEFORE_EVERY_BEACON`.
COMMS_uptime_to_start_ant_deployment_sec
| Field | Value |
| Type | int |
| Default Value | 3600 |
Docstring:
@brief The uptime, as defined in the Launch Provider ICD, at which the antennas should be deployed.
CONFIG_EPS_enable_uart_debug_print
| Field | Value |
| Type | int |
| Default Value | 0 |
Docstring:
@brief When enabled, the EPS's raw data is sent to the debug UART.
CONFIG_int_demo_var_1
| Field | Value |
| Type | int |
| Default Value | 13345 |
Docstring:
@brief Does nothing. Used for testing configuration variables.
EPS_max_time_deviation_for_sync_ms
| Field | Value |
| Type | int |
| Default Value | 2000 |
Docstring:
@brief If the OBC time and EPS time differ by more than this value, the OBC time will be set based on the EPS time.
@note Default: 2000 ms = 2 seconds.
@note Strongly related to EPS_time_sync_period_sec.
@note Recommendation: Do not set to < 1500-2000ms, as the EPS time is only granular to 1 second.
EPS_monitor_interval_ms
| Field | Value |
| Type | int |
| Default Value | 20000 |
Docstring:
@brief The interval at which the `EPS_monitor_and_disable_overcurrent_channels` task runs.
EPS_monitor_safety_adcs_interval_ms
| Field | Value |
| Type | int |
| Default Value | 20000 |
Docstring:
@brief Check whether the EPS is in safety mode. If it's in safety mode, disable all EPS power channels.
@note Default: 20000 ms = 20 seconds
@note Set to 0 to disable this feature.
EPS_time_sync_period_sec
| Field | Value |
| Type | int |
| Default Value | 600 |
Docstring:
@brief How frequently to set the OBC time based on the EPS time if the time divergence is >2 seconds.
@note Default: 600 seconds = 10 minutes.
@note Set to 0 to disable time syncing.
GNSS_write_cmd_mode_data_to_firehose_file
| Field | Value |
| Type | int |
| Default Value | 1 |
Docstring:
@brief Boolean. Whether to store command-mode GNSS data to the firehose file.
@details If GNSS firehose storage mode is enabled, and the GNSS_send_cmd_get_response
function is used (e.g., via the `gnss_send_cmd_ascii` command), this config variable
controls whether the command-mode response data is written to the firehose file.
LOG_file_flush_interval_sec
| Field | Value |
| Type | int |
| Default Value | 60 |
Docstring:
@brief Interval in seconds at which to flush the log file to the filesystem.
@note Nominal: 60 seconds = 1 minute.
LOG_file_rotation_interval_sec
| Field | Value |
| Type | int |
| Default Value | 1800 |
Docstring:
@brief Interval in seconds where a new dated log file is created, and the old file is closed
@note Nominal: 1800 seconds = 30 minutes.
LOG_timestamp_prefix_format
| Field | Value |
| Type | int |
| Default Value | 0 |
Docstring:
@brief Format for the timestamp prefix.
@details Options:
- 0=synctime+offset
- 1=ISO8601-like datetime with ms
- 2=ISO8601-like datetime without ms
- other=synctime+offset (fallback)
@note Configurable with the configuration telecommand.
@note Could be an enum in a perfect world, but using int for speed of implementation.
MPI_max_recording_duration_sec
| Field | Value |
| Type | int |
| Default Value | 900 |
Docstring:
@brief Maximum duration for MPI data recording in seconds.
@note Set this value to 0 (via configuration) to disable the duration limit.
@note This configuration variable is designed to prevent against an operator failing to
schedule a stop telecommand for MPI data recording.
MPI_max_temperature_shutoff_celcius
| Field | Value |
| Type | int |
| Default Value | 60 |
Docstring:
@brief If the MPI exceeds this value during data recording, recording will be disabled.
@note Set this value to 0 (via configuration) to disable the temperature shutoff feature.
STM32_system_reset_interval_sec
| Field | Value |
| Type | int |
| Default Value | 604800 |
Docstring:
@brief If the system uptime exceeds this value, the system will reset (reboot).
@note This is to recover the system in case of a radiation-induced hang or other invalid state.
@note Default: 604800 sec = 7 days.
@note Set to 0 to disable this feature.
STM32_system_reset_no_uplink_interval_sec
| Field | Value |
| Type | int |
| Default Value | 216000 |
Docstring:
@brief If the duration since an AX100 uplink telecommand exceeds this value, the system will reset (reboot).
@note This is to recover the system in case of a radiation-induced hang or other invalid state.
@note Default: 216000 sec = 2.5 days.
@note Set to 0 to disable this feature.
TASK_heartbeat_period_ms
| Field | Value |
| Type | int |
| Default Value | 10990 |
Docstring:
@brief The period of the heartbeat task, in milliseconds. 0 to disable.
TCMD_enqueue_from_agenda_file_interval_ms
| Field | Value |
| Type | int |
| Default Value | 45000 |
Docstring:
@brief Interval between enqueuing telecommands from the agenda file, in ms.
@note Default: 45000 ms = 45 seconds
TCMD_enqueue_grace_period_ms
| Field | Value |
| Type | int |
| Default Value | 15000 |
Docstring:
@brief When enqueuing telecommands from a file, gracefully handle time resync values <= this value.
@note Default: 15000 ms = 15 seconds
@note If the time resync is more than this value, then a chunk of the agenda file will be discarded,
or commands may be re-enqueued and re-executed.
TCMD_handle_ax100_tcmds_interval_ms
| Field | Value |
| Type | int |
| Default Value | 400 |
Docstring:
@brief The interval between handling telecommands (parsing and adding to agenda) uplinked via the UHF radio.
Note: Does not include execution.
Decrease this to 200ms-250ms (or lower) if bulk uplinking large amounts of data (e.g., firmware).
TCMD_handle_umbilical_tcmds_interval_ms
| Field | Value |
| Type | int |
| Default Value | 400 |
Docstring:
@brief The interval between handling telecommands (parsing and adding to agenda) from the umbilical UART.
@details Any value from 1ms to millions is reasonable. 20ms is a good value for optimized bulk uplink.
Note: Does not include execution.
TCMD_max_consecutive_burst_execution_size
| Field | Value |
| Type | int |
| Default Value | 3 |
Docstring:
@brief Execute this many telecommands back-to-back when they come due, if they're available.
@details Increase this past 3 to execute commands faster (e.g., during bulk uplink).
@note Default: 3.
TCMD_require_unique_tssent
| Field | Value |
| Type | int |
| Default Value | 0 |
Docstring:
@brief Boolean. Whether to enforce unique `@tssent` suffix tag value for all telecommands.
@details When enabled, telecommands with duplicate `@tssent` suffixes will be rejected.
@note When enabled, telecommands without a `@tssent` value will be rejected.
@note 1 = require, 0 = don't require
TCMD_require_valid_sha256
| Field | Value |
| Type | int |
| Default Value | 0 |
Docstring:
@brief Boolean. When 1, the telecommand parser will require a valid SHA256 hash in the telecommand string.
String Configuration Variable Details
- The Max Length values below are the number of normal ASCII characters you can put in the string.
- The allocated C-string size is one larger than the value here to account for the null terminator.
- Emojis are generally supported (e.g., in the friendly message), but count as 4 characters.
COMMS_beacon_friendly_message_str
| Field | Value |
| Type | str |
| Max Length | 41 |
| Default Value | Hello from CalgaryToSpace FrontierSat |
CONFIG_str_demo_var_1
CONFIG_str_demo_var_2
TCMD_active_agenda_filename
| Field | Value |
| Type | str |
| Max Length | 199 |
| Default Value | default_tcmd_agenda.txt |
Docstring:
@brief The file path of the agenda file to load upcoming telecommands from.
@warning While a default agenda is set, it is critical to understand that you SHOULD NOT
fill this agenda file unless absolutely necessary. If you create and fill an agenda
with this default name, it will run on every boot, thus defeating the purpose of
reboots being a stable, fail-safe startup mode.
@note If system stability ends up being super bad, you can put commands in the default to run at
the earth poles on subsequent reboots. That's probably the only time you should ever
create this file though!
@note Nominally, put the agenda in another random file, then update this config string to point
to that other file. That way, on reboot, the agenda stops running (as a fail-safe)!
@note Set this to "DISABLED" (case-sensitive) to disable this feature entirely.