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-1-1-4)
34#define COMMS_BULK_FILE_DOWNLINK_PACKET_MAX_DATA_BYTES_PER_PACKET 193
35
36#if COMMS_BULK_FILE_DOWNLINK_PACKET_MAX_DATA_BYTES_PER_PACKET != (AX100_DOWNLINK_MAX_BYTES - 1 - 1 - 1 - 4)
37#error "COMMS_BULK_FILE_DOWNLINK_PACKET_MAX_DATA_BYTES_PER_PACKET is incorrect"
38#endif
39
40#pragma pack(push, 1)
41
42
43typedef struct {
44 uint8_t packet_type; // COMMS_packet_type_enum_t - Always COMMS_PACKET_TYPE_BEACON_BASIC for this packet
45
46 char satellite_name[4]; // 4 bytes: "CTS1" :)
47
48 uint8_t active_rf_switch_antenna; // Either 1 or 2.
49 uint8_t active_rf_switch_control_mode; // Enum: COMMS_rf_switch_control_mode_enum_t
50 uint32_t uptime_ms;
51
54
56
57 // TODO: LEOPS operation mode
58
59 // TODO: Many more from https://github.com/CalgaryToSpace/CTS-SAT-1-OBC-Firmware/issues/338
60
62
63
64typedef struct {
65 uint8_t packet_type; // COMMS_packet_type_enum_t - Always COMMS_PACKET_TYPE_LOG_MESSAGE for this packet
66
69
70
71typedef struct {
72 uint8_t packet_type; // COMMS_packet_type_enum_t - Always COMMS_PACKET_TYPE_TCMD_RESPONSE for this packet
73
74 uint64_t ts_sent; // 8 bytes
75 uint8_t response_code; // 1 byte
76 uint16_t duration_ms; // 2 bytes
77 uint8_t response_seq_num; // 1 byte
78 uint8_t response_max_seq_num; // 1 byte
79
82
83typedef struct {
84 uint8_t packet_type; // COMMS_packet_type_enum_t - Always COMMS_PACKET_TYPE_BULK_FILE_DOWNLINK for this packet
85
86 uint8_t file_seq_num; // 1 byte
87 uint8_t file_max_seq_num; // 1 byte
88
89 uint32_t file_offset; // 4 bytes
90
93
94// TODO: Add sizeof assertions in unit tests related to the packets above.
95// assert(sizeof(COMMS_log_message_packet_t) == AX100_DOWNLINK_MAX_BYTES);
96// assert(sizeof(COMMS_tcmd_response_packet_t) == AX100_DOWNLINK_MAX_BYTES);
97// assert(sizeof(COMMS_bulk_file_downlink_packet_t) == AX100_DOWNLINK_MAX_BYTES);
98// assert(sizeof(COMMS_beacon_basic_packet_t) <= AX100_DOWNLINK_MAX_BYTES);
99
100#pragma pack(pop)
101
102
104 uint64_t ts_sent,
105 uint8_t response_code,
106 uint16_t duration_ms,
107 char *response,
108 uint32_t response_len
109);
110
111uint8_t COMMS_downlink_log_message(const char log_message_str[]);
112
114 uint8_t file_seq_num,
115 uint8_t file_max_seq_num,
116 uint32_t file_offset,
117 uint8_t data[],
118 uint16_t data_len
119);
121
122#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:121
uint8_t COMMS_downlink_bulk_file_downlink(uint8_t file_seq_num, uint8_t file_max_seq_num, uint32_t file_offset, uint8_t data[], uint16_t data_len)
Definition comms_tx.c:86
#define COMMS_LOG_MESSAGE_PACKET_MAX_DATA_BYTES_PER_PACKET
Definition comms_tx.h:18
Definition comms_tx.h:43
uint8_t active_rf_switch_antenna
Definition comms_tx.h:48
uint64_t unix_epoch_time_ms
Definition comms_tx.h:53
char satellite_name[4]
Definition comms_tx.h:46
uint32_t duration_since_last_uplink_ms
Definition comms_tx.h:52
uint8_t active_rf_switch_control_mode
Definition comms_tx.h:49
uint8_t packet_type
Definition comms_tx.h:44
uint32_t uptime_ms
Definition comms_tx.h:50
uint8_t is_fs_mounted
Definition comms_tx.h:55
Definition comms_tx.h:64
uint8_t data[COMMS_LOG_MESSAGE_PACKET_MAX_DATA_BYTES_PER_PACKET]
Definition comms_tx.h:67
uint8_t packet_type
Definition comms_tx.h:65
Definition comms_tx.h:71
uint8_t packet_type
Definition comms_tx.h:72
uint8_t response_max_seq_num
Definition comms_tx.h:78
uint64_t ts_sent
Definition comms_tx.h:74
uint8_t data[COMMS_TCMD_RESPONSE_PACKET_MAX_DATA_BYTES_PER_PACKET]
Definition comms_tx.h:80
uint8_t response_seq_num
Definition comms_tx.h:77
uint16_t duration_ms
Definition comms_tx.h:76
uint8_t response_code
Definition comms_tx.h:75