CTS-SAT-1-OBC-Firmware
|
#include "telecommand_exec/telecommand_parser.h"
#include "telecommand_exec/telecommand_definitions.h"
#include "telecommand_exec/telecommand_executor.h"
#include "telecommand_exec/telecommand_types.h"
#include "debug_tools/debug_uart.h"
#include "timekeeping/timekeeping.h"
#include "log/log.h"
#include "transforms/arrays.h"
#include "config/configuration.h"
#include "littlefs/littlefs_helper.h"
#include "comms_drivers/comms_tx.h"
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <stdbool.h>
Functions | |
uint8_t | TCMD_add_tcmd_to_agenda (const TCMD_parsed_tcmd_to_execute_t *parsed_tcmd) |
Adds a telecommand to the agenda (schedule/queue) of telecommands to execute. | |
uint16_t | TCMD_get_agenda_used_slots_count () |
Gets the number of used slots in the agenda. | |
int16_t | TCMD_get_next_tcmd_agenda_slot_to_execute () |
Finds the index into TCMD_agenda (slot_num ) of the next telecommand to execute. | |
static int8_t | TCMD_store_resp_to_file (const char *resp_fname, const char *response_output_buf, uint64_t timestamp_sent, const char args_str_no_parens[], uint8_t tcmd_idx, uint32_t duration_ms, uint8_t return_code) |
Logs a message to a file. | |
static uint8_t | TCMD_execute_parsed_telecommand_now (const uint16_t tcmd_idx, const char args_str_no_parens[], const uint64_t timestamp_sent, const char *tcmd_resp_fname, char *response_output_buf, uint16_t response_output_buf_size) |
Executes a telecommand immediately, based on the minimum info required to execute a telecommand. | |
uint8_t | TCMD_execute_telecommand_in_agenda (const uint16_t tcmd_agenda_slot_num, char *response_output_buf, uint16_t response_output_buf_size) |
Executes a telecommand from the agenda immediately. | |
void | TCMD_agenda_delete_all () |
Deletes all entries from the agenda. | |
uint8_t | TCMD_agenda_delete_by_tssent (uint64_t tssent) |
Deletes a telecommand from the agenda by its tssent (timestamp sent) field. | |
uint8_t | TCMD_agenda_fetch () |
Fetches the active agendas. | |
uint8_t | TCMD_agenda_delete_by_name (const char *telecommand_name) |
Deletes all agenda entries with a telecommand name. | |
Variables | |
uint32_t | TCMD_total_tcmd_queued_count = 0 |
uint64_t | TCMD_latest_received_tcmd_timestamp_sent = 0 |
uint16_t | TCMD_timestamp_sent_head = 0 |
The head of the circular buffer of timestamps of telecommands that have been sent. | |
uint64_t | TCMD_timestamp_sent_store [TCMD_TIMESTAMP_RECORD_SIZE] = {0} |
The circular buffer of timestamps of telecommands that have been sent. | |
TCMD_parsed_tcmd_to_execute_t | TCMD_agenda [TCMD_AGENDA_SIZE] |
The agenda (schedule queue) of telecommands to execute. | |
uint8_t | TCMD_agenda_is_valid [TCMD_AGENDA_SIZE] = {0} |
A flag indicating whether a given index in TCMD_agenda is valid (i.e., filled with a not-yet-executed command). | |
uint8_t TCMD_add_tcmd_to_agenda | ( | const TCMD_parsed_tcmd_to_execute_t * | parsed_tcmd | ) |
Adds a telecommand to the agenda (schedule/queue) of telecommands to execute.
parsed_tcmd | The parsed telecommand to add to the agenda. |
parsed_tcmd
arg into the agenda. void TCMD_agenda_delete_all | ( | ) |
Deletes all entries from the agenda.
uint8_t TCMD_agenda_delete_by_name | ( | const char * | telecommand_name | ) |
Deletes all agenda entries with a telecommand name.
telecommand_name | The name of the telecommand in the agenda to delete. (e.g, hello_world) |
LOG_message()
before all returns. Argument is case-insensitive. uint8_t TCMD_agenda_delete_by_tssent | ( | uint64_t | tssent | ) |
Deletes a telecommand from the agenda by its tssent
(timestamp sent) field.
tssent | The timestamp_sent value of the telecommand to delete. |
LOG_message()
to log the deletion before all returns. uint8_t TCMD_agenda_fetch | ( | ) |
Fetches the active agendas.
|
static |
Executes a telecommand immediately, based on the minimum info required to execute a telecommand.
tcmd_idx | The index into TCMD_telecommand_definitions for the telecommand to execute. |
args_str_no_parens | A cstring containing the arguments for the telecommand. Null-terminated. |
timestamp_sent | The value of the @tssent field when the telecommand was received. |
response_output_buf | A buffer to store the response from the telecommand. |
response_output_buf_size | The size of the response_output_buf . |
tcmd_idx
is out of bounds, otherwise the error code from the telecommand function. uint8_t TCMD_execute_telecommand_in_agenda | ( | const uint16_t | tcmd_agenda_slot_num, |
char * | response_output_buf, | ||
uint16_t | response_output_buf_size ) |
Executes a telecommand from the agenda immediately.
tcmd_agenda_slot_num | The index into TCMD_agenda for the telecommand to execute. |
response_output_buf | A buffer to store the response from the telecommand. |
response_output_buf_size | The size of the response_output_buf . |
uint16_t TCMD_get_agenda_used_slots_count | ( | ) |
Gets the number of used slots in the agenda.
int16_t TCMD_get_next_tcmd_agenda_slot_to_execute | ( | ) |
Finds the index into TCMD_agenda
(slot_num
) of the next telecommand to execute.
TCMD_agenda
of the next telecommand to execute, or -1 if none are available/ready. slot_num
which has the lowest timestamp_to_execute
value. If multiple slots have the same timestamp_to_execute
, the lowest slot_num
will be returned.
|
static |
Logs a message to a file.
resp_fname | The name of the file to log to. |
response_output_buf | The message to log. |
TCMD_parsed_tcmd_to_execute_t TCMD_agenda[TCMD_AGENDA_SIZE] |
The agenda (schedule queue) of telecommands to execute.
uint8_t TCMD_agenda_is_valid[TCMD_AGENDA_SIZE] = {0} |
A flag indicating whether a given index in TCMD_agenda
is valid (i.e., filled with a not-yet-executed command).
uint64_t TCMD_latest_received_tcmd_timestamp_sent = 0 |
uint16_t TCMD_timestamp_sent_head = 0 |
The head of the circular buffer of timestamps of telecommands that have been sent.
uint64_t TCMD_timestamp_sent_store[TCMD_TIMESTAMP_RECORD_SIZE] = {0} |
The circular buffer of timestamps of telecommands that have been sent.
uint32_t TCMD_total_tcmd_queued_count = 0 |