CTS-SAT-1-OBC-Firmware
Loading...
Searching...
No Matches
comms_tx.h
Go to the documentation of this file.
1#ifndef INCLUDE_GUARD__COMMS_TX_H__
2#define INCLUDE_GUARD__COMMS_TX_H__
3
5
15
16
17// (AX100_DOWNLINK_MAX_BYTES - 1)
18#define COMMS_LOG_MESSAGE_PACKET_MAX_DATA_BYTES_PER_PACKET 199
19
20#if COMMS_LOG_MESSAGE_PACKET_MAX_DATA_BYTES_PER_PACKET != (AX100_DOWNLINK_MAX_BYTES - 1)
21#error "COMMS_LOG_MESSAGE_PACKET_MAX_DATA_BYTES_PER_PACKET is incorrect"
22#endif
23
24
25// (AX100_DOWNLINK_MAX_BYTES - 1-8-1-2-1-1)
26#define COMMS_TCMD_RESPONSE_PACKET_MAX_DATA_BYTES_PER_PACKET 186
27
28
29#if COMMS_TCMD_RESPONSE_PACKET_MAX_DATA_BYTES_PER_PACKET != (AX100_DOWNLINK_MAX_BYTES - 1 - 8 - 1 - 2 - 1 - 1)
30#error "COMMS_TCMD_RESPONSE_PACKET_MAX_DATA_BYTES_PER_PACKET is incorrect"
31#endif
32
33// (AX100_DOWNLINK_MAX_BYTES - 1-4)
34#define COMMS_BULK_FILE_DOWNLINK_PACKET_MAX_DATA_BYTES_PER_PACKET 195
35
36#if COMMS_BULK_FILE_DOWNLINK_PACKET_MAX_DATA_BYTES_PER_PACKET != (AX100_DOWNLINK_MAX_BYTES - 1 - 4)
37#error "COMMS_BULK_FILE_DOWNLINK_PACKET_MAX_DATA_BYTES_PER_PACKET is incorrect"
38#endif
39
40#define COMMS_BEACON_FRIENDLY_MESSAGE_SIZE 42
41
42#pragma pack(push, 1)
43
44
45typedef struct {
46 uint8_t packet_type; // COMMS_packet_type_enum_t - Always COMMS_PACKET_TYPE_BEACON_BASIC for this packet
47
48 char satellite_name[4]; // 4 bytes: "CTS1" :)
49
50 uint8_t active_rf_switch_antenna; // Either 1 or 2.
51 uint8_t active_rf_switch_control_mode; // Enum: COMMS_rf_switch_control_mode_enum_t
52 uint32_t uptime_ms;
53
56 uint8_t last_time_sync_source_enum; // Enum: TIME_sync_source_enum_t
57
59
62
64
65 uint8_t eps_mode_enum; // 0=startup, 1=nominal, 2=safety, 3=emergency_low_power
66 uint8_t eps_reset_cause_enum; // 0=power_on, 1=watchdog, 2=commanded, 3=control_system_reset, 4=emergency_low_power
73 // Note: Third battery temperature sensor doesn't work on our model.
80
82
83 uint8_t reboot_reason; // Enum: STM32_reset_cause_t
84
85 uint8_t cts1_operation_state; // Enum: CTS1_operation_state_enum_t
86 uint8_t rbf_pin_state; // Enum: OBC_rbf_state_enum_t
87
88 uint8_t mpi_rx_mode_enum; // Enum: MPI_rx_mode_enum_t
89 uint8_t mpi_transceiver_state_enum; // Enum: MPI_current_transceiver_state_enum_t
90
91 uint8_t mpi_last_reason_for_stopping_enum; // Enum: MPI_reason_for_stopping_active_mode_enum_t
92
94
95 uint8_t gnss_rx_mode_enum; // Enum: GNSS_rx_mode_enum_t
96
97 // TODO: Total log message counts (esp. for warning/error levels)
98
99 // End with a null-terminated configurable friendly message.
101
102 char end_message[4]; // "END\0"
103
105
106
107typedef struct {
108 uint8_t packet_type; // COMMS_packet_type_enum_t - Always COMMS_PACKET_TYPE_LOG_MESSAGE for this packet
109
112
113
114typedef struct {
115 uint8_t packet_type; // COMMS_packet_type_enum_t - Always COMMS_PACKET_TYPE_TCMD_RESPONSE for this packet
116
117 uint64_t ts_sent; // 8 bytes
118 uint8_t response_code; // 1 byte
119 uint16_t duration_ms; // 2 bytes
120 uint8_t response_seq_num; // 1 byte
121 uint8_t response_max_seq_num; // 1 byte
122
125
126typedef struct {
127 uint8_t packet_type; // COMMS_packet_type_enum_t - Always COMMS_PACKET_TYPE_BULK_FILE_DOWNLINK for this packet
128
129 uint32_t file_offset; // 4 bytes
130
133
134// Unit tests contain assertions like: assert(sizeof(COMMS_log_message_packet_t) == AX100_DOWNLINK_MAX_BYTES);
135
136#pragma pack(pop)
137
138
140 uint64_t ts_sent,
141 uint8_t response_code,
142 uint16_t duration_ms,
143 char *response,
144 uint32_t response_len
145);
146
147uint8_t COMMS_downlink_log_message(const char log_message_str[]);
148
150 uint16_t file_seq_num,
151 uint32_t file_offset,
152 uint8_t data[],
153 uint16_t data_len
154);
156
157#endif // INCLUDE_GUARD__COMMS_TX_H__
#define COMMS_TCMD_RESPONSE_PACKET_MAX_DATA_BYTES_PER_PACKET
Definition comms_tx.h:26
COMMS_packet_type_enum_t
Packet types for the COMMS downlink packets.
Definition comms_tx.h:8
@ COMMS_PACKET_TYPE_LOG_MESSAGE
Definition comms_tx.h:11
@ COMMS_PACKET_TYPE_BULK_FILE_DOWNLINK
Definition comms_tx.h:13
@ COMMS_PACKET_TYPE_BEACON_BASIC
Definition comms_tx.h:9
@ COMMS_PACKET_TYPE_TCMD_RESPONSE
Definition comms_tx.h:12
@ COMMS_PACKET_TYPE_BEACON_PERIPHERAL
Definition comms_tx.h:10
#define COMMS_BULK_FILE_DOWNLINK_PACKET_MAX_DATA_BYTES_PER_PACKET
Definition comms_tx.h:34
uint8_t COMMS_downlink_log_message(const char log_message_str[])
Definition comms_tx.c:59
uint8_t COMMS_downlink_tcmd_response(uint64_t ts_sent, uint8_t response_code, uint16_t duration_ms, char *response, uint32_t response_len)
Definition comms_tx.c:5
uint8_t COMMS_downlink_beacon_basic_packet()
Definition comms_tx.c:120
#define COMMS_LOG_MESSAGE_PACKET_MAX_DATA_BYTES_PER_PACKET
Definition comms_tx.h:18
uint8_t COMMS_downlink_bulk_file_downlink(uint16_t file_seq_num, uint32_t file_offset, uint8_t data[], uint16_t data_len)
Definition comms_tx.c:86
#define COMMS_BEACON_FRIENDLY_MESSAGE_SIZE
Definition comms_tx.h:40
Definition comms_tx.h:45
uint8_t eps_battery_percent
Definition comms_tx.h:70
uint8_t active_rf_switch_antenna
Definition comms_tx.h:50
uint8_t cts1_operation_state
Definition comms_tx.h:85
int32_t eps_total_pcu_power_input_cW
Definition comms_tx.h:76
uint16_t eps_battery_voltage_mV
Definition comms_tx.h:69
uint8_t mpi_transceiver_state_enum
Definition comms_tx.h:89
uint16_t eps_error_code
Definition comms_tx.h:68
char friendly_message[COMMS_BEACON_FRIENDLY_MESSAGE_SIZE]
Definition comms_tx.h:100
int32_t eps_total_fault_count
Definition comms_tx.h:74
uint16_t pending_queued_tcmd_count
Definition comms_tx.h:61
uint8_t last_time_sync_source_enum
Definition comms_tx.h:56
uint8_t eps_reset_cause_enum
Definition comms_tx.h:66
uint8_t mpi_rx_mode_enum
Definition comms_tx.h:88
uint8_t mpi_last_reason_for_stopping_enum
Definition comms_tx.h:91
uint8_t gnss_rx_mode_enum
Definition comms_tx.h:95
uint64_t unix_epoch_time_ms
Definition comms_tx.h:55
int32_t eps_total_pcu_power_output_cW
Definition comms_tx.h:77
int16_t eps_battery_temperature_0_cC
Definition comms_tx.h:71
char satellite_name[4]
Definition comms_tx.h:48
int32_t obc_temperature_cC
Definition comms_tx.h:81
uint8_t rbf_pin_state
Definition comms_tx.h:86
uint32_t duration_since_last_uplink_ms
Definition comms_tx.h:54
uint8_t active_rf_switch_control_mode
Definition comms_tx.h:51
uint16_t total_tcmd_queued_count
Definition comms_tx.h:60
uint8_t packet_type
Definition comms_tx.h:46
uint8_t reboot_reason
Definition comms_tx.h:83
char end_message[4]
Definition comms_tx.h:102
int16_t eps_battery_temperature_1_cC
Definition comms_tx.h:72
uint32_t eps_enabled_channels_bitfield
Definition comms_tx.h:75
uint32_t eps_uptime_sec
Definition comms_tx.h:67
int32_t eps_total_avg_pcu_power_output_cW
Definition comms_tx.h:79
uint8_t eps_mode_enum
Definition comms_tx.h:65
uint8_t gnss_uart_interrupt_enabled
Definition comms_tx.h:93
uint32_t uptime_ms
Definition comms_tx.h:52
uint32_t total_beacon_count_since_boot
Definition comms_tx.h:63
int32_t eps_total_avg_pcu_power_input_cW
Definition comms_tx.h:78
uint8_t is_fs_mounted
Definition comms_tx.h:58
Definition comms_tx.h:107
uint8_t data[COMMS_LOG_MESSAGE_PACKET_MAX_DATA_BYTES_PER_PACKET]
Definition comms_tx.h:110
uint8_t packet_type
Definition comms_tx.h:108
Definition comms_tx.h:114
uint8_t packet_type
Definition comms_tx.h:115
uint8_t response_max_seq_num
Definition comms_tx.h:121
uint64_t ts_sent
Definition comms_tx.h:117
uint8_t data[COMMS_TCMD_RESPONSE_PACKET_MAX_DATA_BYTES_PER_PACKET]
Definition comms_tx.h:123
uint8_t response_seq_num
Definition comms_tx.h:120
uint16_t duration_ms
Definition comms_tx.h:119
uint8_t response_code
Definition comms_tx.h:118