Files
templates/c/set-protocol/include/pcan_config.h
T

52 lines
2.0 KiB
C

/*
* Параметры сборки транспорта ProtoCAN: размеры и выбор реализации CRC. Они участвуют в
* компиляции ядра и потребителей заголовков; согласованность настроек важна для размеров
* структур и буферов.
*/
/**
* @file pcan_config.h
* @brief Настройки времени компиляции.
*
* Значения по умолчанию рассчитаны на МК без ОС. Переопределяются
* либо через -D, либо через собственный pcan_config_user.h.
*/
#ifndef PCAN_CONFIG_H
#define PCAN_CONFIG_H
#if defined(PCAN_USE_USER_CONFIG)
#include "pcan_config_user.h"
#endif
/** Максимальная длина поля данных CAN. */
#ifndef PCAN_DATA_MAX
#define PCAN_DATA_MAX 8U
#endif
/**
* @brief Барьер компилятора для разделяемых с прерыванием переменных.
*
* Библиотека не отключает прерывания сама: очереди рассчитаны на схему
* "один писатель + один читатель", где индексы обновляются атомарно.
* Если у вас несколько писателей, оберните вызовы своей блокировкой.
*/
#ifndef PCAN_BARRIER
# if defined(__GNUC__) || defined(__clang__) || defined(__ARMCC_VERSION)
# define PCAN_BARRIER() __asm volatile("" ::: "memory")
# else
# define PCAN_BARRIER() do { } while (0)
# endif
#endif
/** Таблица CRC (512 байт flash) вместо побитового расчёта. */
#ifndef PCAN_CRC_TABLE
#define PCAN_CRC_TABLE 0
#endif
/** Количество регионов, которые может содержать одна карта GAS. */
#ifndef PCAN_GAS_MAX_REGIONS
#define PCAN_GAS_MAX_REGIONS 16U
#endif
#endif /* PCAN_CONFIG_H */