Calibration_Stand/backend/Inc/structures.h

77 lines
2.7 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#ifndef STRUCTURES_H
#define STRUCTURES_H
#include <stdint.h>
// Перечисление для состояний машины
typedef enum {
ACTION_WAIT_SENSOR,
ACTION_CHECK_SENSOR_ACTIVATION,
ACTION_GET_SENSOR_ID,
ACTION_SET_PRESSURE,
ACTION_CHECK_PRESSURE,
ACTION_SEND_DATA,
ACTION_RELEASE_PRESSURE,
ACTION_PRINT_RESULTS,
ACTION_WAIT_SENSOR_RELEASE
} ActionState;
// Структура для отправки данных
typedef struct __attribute__((__packed__)) SxTransmit
{
uint8_t payload; // 1 байт | Eva Кадр 0x16
uint8_t type; // 1 байт | Тип кадра (Пример: 0х92)
uint32_t id_sensor; // 4 байта | ID тестируемого датчика
uint16_t pressure; // 2 байта | Давление
int16_t temperature; // 2 байта | Темперетаура
uint32_t timestamp; // 4 байта | Время калибровки
uint8_t otherData[9]; // 9 байтов | Резерв
} SxTransmit;
// Структура для получения данных с FIFO
typedef struct __attribute__((__packed__)) SxResive
{
uint8_t payload; // 1 байт
uint8_t type; // 1 байт
uint8_t data[21];
} SxResive;
// Структура для получения данных с FXTH
typedef struct
{
uint32_t id_sensor; // 4 | ID FXTH (0x914E877F)
uint16_t pressure; // 2 | Давление
int16_t temperature; // 2 | Температура
} EtalonSensor;
// Структура для хранения данных давления
typedef struct {
uint16_t counter_pressure;
uint32_t sum_pressure;
uint16_t min_pressure;
uint16_t max_pressure;
uint16_t avg_pressure;
} PressureData;
// Структура для хранения ошибок с использованием битовых полей
typedef struct {
uint8_t reference_sensor_error : 1; // Бит 0 | Нет ответа от FXTH
uint8_t compressor_pressure_error : 1; // Бит 1 | Низкое давление компрессора
uint8_t pressure_leak_error : 1; // Бит 2 | Утечка давления (травит датчик)
uint8_t sensor_response_error : 1; // Бит 3 | Нет ответа от тестируемого датчика
uint8_t reserved : 4; // Биты 4-7
} ErrorData;
//Структура для хранения данных о тестируемом датчике
typedef struct {
uint32_t id_sensor;
uint16_t pressure;
uint8_t sensor_error;
uint16_t temperature;
uint16_t voltage;
int8_t rssi;
uint16_t etalon_pressure;
} TestSensor;
#endif