77 lines
2.7 KiB
C
77 lines
2.7 KiB
C
|
#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
|