#ifndef STRUCTURES_H #define STRUCTURES_H #include // Перечисление для состояний машины 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