CTS-SAT-1-OBC-Firmware
Loading...
Searching...
No Matches
uart_handler.h
Go to the documentation of this file.
1
2#ifndef INCLUDE_GUARD__UART_HANDLER_H__
3#define INCLUDE_GUARD__UART_HANDLER_H__
4
5#include "stm32l4xx_hal.h"
6#include <stdint.h>
7#include "mpi/mpi_types.h"
8
9
16
19
20// Name the UART interfaces
21extern UART_HandleTypeDef *UART_telecommand_port_handle;
22extern UART_HandleTypeDef *UART_mpi_port_handle;
23extern UART_HandleTypeDef *UART_ax100_port_handle;
24extern UART_HandleTypeDef *UART_gnss_port_handle;
25extern UART_HandleTypeDef *UART_camera_port_handle;
26extern UART_HandleTypeDef *UART_eps_port_handle;
27
28extern const uint16_t UART_telecommand_buffer_len; // Length of the UART telecommand buffer
29extern volatile uint8_t UART_telecommand_buffer[]; // Buffer for UART telecommands
30extern volatile uint16_t UART_telecommand_buffer_write_idx; // Write index for UART telecommand buffer
31extern volatile uint32_t UART_telecommand_last_write_time_ms; // Last write time in milliseconds for UART telecommand
32
33extern const uint16_t UART_mpi_buffer_len; // Length of the MPI response buffer (for telecommand responses only & NOT SCIENCE DATA)
34extern volatile uint8_t UART_mpi_buffer[]; // Buffer for MPI response
35extern volatile uint16_t UART_mpi_buffer_write_idx; // Write index for MPI response buffer
36extern volatile uint32_t UART_mpi_last_write_time_ms; // Last write time in milliseconds for MPI response
37extern volatile uint8_t UART_mpi_last_rx_byte; // Last received byte from the MPI response
38
39extern volatile uint32_t UART_ax100_last_write_time_ms; // Last write time in milliseconds for AX100 response
40
41extern const uint16_t UART_gnss_buffer_len; // Length of the GNSS response buffer
42extern volatile uint8_t UART_gnss_buffer[]; // Buffer for GNSS response
43extern volatile uint16_t UART_gnss_buffer_write_idx; // Write index for GNSS response buffer
44extern volatile uint32_t UART_gnss_last_write_time_ms; // Last write time in milliseconds for GNSS response
45
46extern const uint16_t UART_camera_dma_buffer_len; // Length of the CAMERA DMA buffer
47extern const uint16_t UART_camera_dma_buffer_len_half; // Half length of the CAMERA DMA buffer
48extern volatile uint8_t UART_camera_dma_buffer[]; // Buffer for CAMERA UART response
49extern volatile uint8_t UART_camera_pending_fs_write_half_1_buf[];
50extern volatile uint8_t UART_camera_pending_fs_write_half_2_buf[];
51extern volatile uint32_t UART_camera_last_write_time_ms; // Last write time in milliseconds for CAMERA response
52
53extern const uint16_t UART_eps_buffer_len; // Length of the EPS response buffer
54extern volatile uint8_t UART_eps_buffer[]; // Buffer for EPS response
55extern volatile uint16_t UART_eps_buffer_write_idx; // Write index for EPS response buffer
56extern volatile uint32_t UART_eps_last_write_time_ms; // Last write time in milliseconds for EPS response
57extern volatile uint8_t UART_eps_is_expecting_data; // Set to 1 when a command is sent, and we're awaiting a response
58
59extern const uint16_t UART_gnss_buffer_len;
60extern volatile uint8_t UART_gnss_buffer[];
61extern volatile uint16_t UART_gnss_buffer_write_idx;
62extern volatile uint32_t UART_gnss_last_write_time_ms;
63extern volatile uint8_t UART_gnss_buffer_last_rx_byte;
64extern volatile uint8_t UART_gnss_uart_interrupt_enabled; // Flag to enable or disable the UART GNSS ISR
65
66// UART MPI Science data buffers.
67extern const uint8_t UART_mpi_rx_dma_buffer_len;
68extern volatile uint8_t UART_mpi_rx_dma_buffer[];
69extern const uint16_t MPI_science_buffer_len;
70extern volatile uint8_t MPI_science_buffer_one[];
71extern volatile uint8_t MPI_science_buffer_two[];
72
75
76extern volatile uint32_t MPI_buffer_one_last_filled_uptime_ms;
77extern volatile uint32_t MPI_buffer_two_last_filled_uptime_ms;
78
79
80#define AX100_MAX_KISS_FRAMES_IN_RX_QUEUE 8
81#define AX100_MAX_KISS_FRAME_SIZE_BYTES 500 // Could be as low as 256, probably.
82
87
89extern volatile uint8_t UART_AX100_kiss_frame_queue_head;
90extern volatile uint8_t UART_AX100_kiss_frame_queue_tail;
91
92
93
95void GNSS_set_uart_interrupt_state(uint8_t new_enabled) ;
96uint8_t CAMERA_set_expecting_data(uint8_t new_enabled) ;
97
98#endif // INCLUDE_GUARD__UART_HANDLER_H__
MPI_buffer_state_enum_t
Definition mpi_types.h:19
Definition uart_handler.h:83
uint16_t len
Definition uart_handler.h:85
uint8_t data[AX100_MAX_KISS_FRAME_SIZE_BYTES]
Definition uart_handler.h:84
UART_HandleTypeDef * UART_eps_port_handle
Definition uart_handler.c:19
CAMERA_uart_write_state_enum_t
Definition uart_handler.h:10
@ CAMERA_UART_WRITE_STATE_HALF_FILLING
Definition uart_handler.h:12
@ CAMERA_UART_WRITE_STATE_IDLE
Definition uart_handler.h:11
@ CAMERA_UART_WRITE_STATE_HALF_FILLED_WAITING_FS_WRITE
Definition uart_handler.h:13
@ CAMERA_UART_WRITE_STATE_HALF_WRITTEN_TO_FS
Definition uart_handler.h:14
volatile uint32_t UART_ax100_last_write_time_ms
Definition uart_handler.c:38
const uint16_t UART_gnss_buffer_len
Definition uart_handler.h:59
volatile uint8_t UART_AX100_kiss_frame_queue_head
Definition uart_handler.c:103
volatile uint16_t UART_eps_buffer_write_idx
Definition uart_handler.c:55
#define AX100_MAX_KISS_FRAMES_IN_RX_QUEUE
Definition uart_handler.h:80
volatile uint16_t UART_gnss_buffer_write_idx
Definition uart_handler.h:61
UART_HandleTypeDef * UART_telecommand_port_handle
Definition uart_handler.c:14
volatile uint8_t UART_camera_pending_fs_write_half_1_buf[]
Definition uart_handler.c:46
#define AX100_MAX_KISS_FRAME_SIZE_BYTES
Definition uart_handler.h:81
volatile AX100_kiss_frame_struct_t UART_AX100_kiss_frame_queue[AX100_MAX_KISS_FRAMES_IN_RX_QUEUE]
Definition uart_handler.c:102
volatile uint16_t UART_telecommand_buffer_write_idx
Definition uart_handler.c:24
const uint16_t MPI_science_buffer_len
Length of the MPI_science_buffer_one and MPI_science_buffer_two arrays.
Definition uart_handler.c:80
volatile uint32_t MPI_buffer_one_last_filled_uptime_ms
Definition uart_handler.c:88
volatile uint8_t UART_gnss_buffer[]
Definition uart_handler.h:60
const uint16_t UART_eps_buffer_len
Definition uart_handler.c:53
UART_HandleTypeDef * UART_camera_port_handle
Definition uart_handler.c:18
volatile uint8_t UART_mpi_last_rx_byte
Definition uart_handler.c:32
volatile uint8_t UART_camera_pending_fs_write_half_2_buf[]
Definition uart_handler.c:47
const uint16_t UART_mpi_buffer_len
Definition uart_handler.c:30
void UART_init_uart_handlers(void)
Definition uart_handler.c:472
volatile MPI_buffer_state_enum_t MPI_buffer_one_state
Current state of the MPI_active_data_median_buffer (pending write vs. written).
Definition uart_handler.c:85
volatile uint8_t UART_mpi_rx_dma_buffer[]
Definition uart_handler.c:77
volatile uint32_t UART_mpi_last_write_time_ms
Definition uart_handler.c:33
volatile uint32_t UART_telecommand_last_write_time_ms
Definition uart_handler.c:25
volatile uint8_t UART_eps_is_expecting_data
Definition uart_handler.c:57
UART_HandleTypeDef * UART_gnss_port_handle
Definition uart_handler.c:17
volatile CAMERA_uart_write_state_enum_t CAMERA_uart_half_2_state
Definition uart_handler.c:50
volatile uint32_t UART_gnss_last_write_time_ms
Definition uart_handler.h:62
volatile uint32_t UART_eps_last_write_time_ms
Definition uart_handler.c:56
volatile uint8_t MPI_science_buffer_one[]
Definition uart_handler.c:81
volatile uint8_t UART_telecommand_buffer[]
Definition uart_handler.c:23
const uint8_t UART_mpi_rx_dma_buffer_len
Definition uart_handler.c:76
UART_HandleTypeDef * UART_mpi_port_handle
Definition uart_handler.c:15
volatile CAMERA_uart_write_state_enum_t CAMERA_uart_half_1_state
Definition uart_handler.c:49
volatile uint32_t MPI_buffer_two_last_filled_uptime_ms
Definition uart_handler.c:89
volatile uint16_t UART_mpi_buffer_write_idx
Definition uart_handler.c:34
const uint16_t UART_telecommand_buffer_len
Definition uart_handler.c:22
volatile uint8_t UART_gnss_buffer_last_rx_byte
Definition uart_handler.c:72
volatile uint8_t UART_gnss_uart_interrupt_enabled
Definition uart_handler.c:73
UART_HandleTypeDef * UART_ax100_port_handle
Definition uart_handler.c:16
uint8_t CAMERA_set_expecting_data(uint8_t new_enabled)
Sets the UART interrupt state (enabled/disabled)
Definition uart_handler.c:414
const uint16_t UART_camera_dma_buffer_len
Definition uart_handler.c:43
volatile uint8_t MPI_science_buffer_two[]
Definition uart_handler.c:82
const uint16_t UART_camera_dma_buffer_len_half
Definition uart_handler.c:44
volatile uint8_t UART_AX100_kiss_frame_queue_tail
Definition uart_handler.c:104
volatile MPI_buffer_state_enum_t MPI_buffer_two_state
Definition uart_handler.c:86
volatile uint32_t UART_camera_last_write_time_ms
Definition uart_handler.c:48
volatile uint8_t UART_eps_buffer[]
Definition uart_handler.c:54
volatile uint8_t UART_mpi_buffer[]
Definition uart_handler.c:31
volatile uint8_t UART_camera_dma_buffer[]
Definition uart_handler.c:45
void GNSS_set_uart_interrupt_state(uint8_t new_enabled)
Sets the UART interrupt state (enabled/disabled)
Definition uart_handler.c:401