feat(protocan-transport): транспортный уровень ProtoCAN и каталог GUI
Перенесён из репозитория protocan-transport, который подключался сабмодулем в CAN_to_RS485. Кадрирование AA 55 с CRC16 поверх любого байтового потока (RS485, RS232, USB CDC), разбор 29-битного идентификатора, общее адресное пространство регистров и каталог с подпиской на поток значений для SETGUI. Состояние живёт в структурах вызывающего, поэтому в одной прошивке поднимается сколько угодно независимых каналов. Порт STM32F4 (USART + DMA) в комплекте. Хостовые тесты test_transport и test_gui проходят.
This commit is contained in:
45
c/protocan-transport/include/pcan_config.h
Normal file
45
c/protocan-transport/include/pcan_config.h
Normal file
@@ -0,0 +1,45 @@
|
||||
/**
|
||||
* @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 */
|
||||
Reference in New Issue
Block a user