CTS-SAT-1-OBC-Firmware
Loading...
Searching...
No Matches
mpi_types.h
Go to the documentation of this file.
1/*
2 * mpi_types.h
3 *
4 * Created on: Jun 14, 2024
5 * Author: Vaibhav Kapoor
6 */
7
8#ifndef INCLUDE_GUARD__MPI_TYPES_H
9#define INCLUDE_GUARD__MPI_TYPES_H
10
11#include <stdint.h>
12
14typedef enum {
15 MPI_RX_MODE_COMMAND_MODE, // MPI is in command mode
16 MPI_RX_MODE_SENSING_MODE, // MPI is science data is being collected mode
17 MPI_RX_MODE_NOT_LISTENING_TO_MPI // MPI may be sending science data, but it is not being collected by OBC.
19
20typedef enum {
21 MPI_MEMORY_WRITE_STATUS_AWAITING_WRITE, // MPI buffer is waiting to be fully wrote to memory
22 MPI_MEMORY_WRITE_STATUS_READY_TO_FILL, // MPI buffer is ready to be wrote to
24
32
40typedef struct
41{
42 uint8_t sync_byte1; // First synchronization byte
43 uint8_t sync_byte2; // Second synchronization byte
44 uint8_t sync_byte3; // Third synchronization byte
45 uint8_t sync_byte4; // Fourth synchronization byte
46 uint16_t frame_counter; // Frame counter for the data frame
47 int16_t board_temperature; // Current board temperature
48 uint8_t firmware_version; // Firmware version of the MPI unit
49 uint8_t mpi_unit_id; // ID of the MPI unit
50 uint16_t detector_status; // Current status of the detector
51 uint16_t inner_dome_voltage_setting; // Voltage setting for the inner dome
52 uint8_t spib_reserved; // Reserved field
53 uint8_t inner_dome_scan_index; // Index for inner dome scanning
54 uint16_t faceplate_voltage_setting; // Voltage setting for the faceplate
55 uint16_t faceplate_voltage_adc_reading; // ADC reading for faceplate voltage
56 uint16_t inner_dome_voltage_adc_reading; // ADC reading for inner dome voltage
57 uint16_t pixels[67]; // Array of 67 image pixels (Not a typo: It is actually 67!)
58 uint16_t cyclic_redundancy_check; // CRC for data integrity check
60
62
64
65#endif // INCLUDE_GUARD__MPI_TYPES_H
const char * MPI_rx_mode_enum_to_str(MPI_rx_mode_enum_t mode)
Definition mpi_types.c:3
MPI_buffer_state_enum_t
Definition mpi_types.h:20
@ MPI_MEMORY_WRITE_STATUS_READY_TO_FILL
Definition mpi_types.h:22
@ MPI_MEMORY_WRITE_STATUS_AWAITING_WRITE
Definition mpi_types.h:21
MPI_rx_mode_enum_t
Enumerates the different modes under which the satellite can operate the MPI.
Definition mpi_types.h:14
@ MPI_RX_MODE_COMMAND_MODE
Definition mpi_types.h:15
@ MPI_RX_MODE_NOT_LISTENING_TO_MPI
Definition mpi_types.h:17
@ MPI_RX_MODE_SENSING_MODE
Definition mpi_types.h:16
MPI_transceiver_state_enum_t
Represents the state of the MPI transceiver chip.
Definition mpi_types.h:26
@ MPI_TRANSCEIVER_MODE_MOSI
Definition mpi_types.h:28
@ MPI_TRANSCEIVER_MODE_INACTIVE
Definition mpi_types.h:27
@ MPI_TRANSCEIVER_MODE_MISO
Definition mpi_types.h:29
@ MPI_TRANSCEIVER_MODE_DUPLEX
Definition mpi_types.h:30
const char * MPI_transceiver_state_enum_to_str(MPI_transceiver_state_enum_t state)
Definition mpi_types.c:15
Represents an data frame received from the MPI.
Definition mpi_types.h:41
uint8_t firmware_version
Definition mpi_types.h:48
uint16_t frame_counter
Definition mpi_types.h:46
uint8_t sync_byte1
Definition mpi_types.h:42
uint16_t faceplate_voltage_adc_reading
Definition mpi_types.h:55
uint16_t detector_status
Definition mpi_types.h:50
uint8_t inner_dome_scan_index
Definition mpi_types.h:53
uint8_t sync_byte3
Definition mpi_types.h:44
uint8_t sync_byte2
Definition mpi_types.h:43
uint16_t inner_dome_voltage_setting
Definition mpi_types.h:51
uint8_t sync_byte4
Definition mpi_types.h:45
uint16_t inner_dome_voltage_adc_reading
Definition mpi_types.h:56
int16_t board_temperature
Definition mpi_types.h:47
uint16_t cyclic_redundancy_check
Definition mpi_types.h:58
uint8_t mpi_unit_id
Definition mpi_types.h:49
uint8_t spib_reserved
Definition mpi_types.h:52
uint16_t faceplate_voltage_setting
Definition mpi_types.h:54
uint16_t pixels[67]
Definition mpi_types.h:57