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 |