Перенесён из репозитория protocan-transport, который подключался сабмодулем в CAN_to_RS485. Кадрирование AA 55 с CRC16 поверх любого байтового потока (RS485, RS232, USB CDC), разбор 29-битного идентификатора, общее адресное пространство регистров и каталог с подпиской на поток значений для SETGUI. Состояние живёт в структурах вызывающего, поэтому в одной прошивке поднимается сколько угодно независимых каналов. Порт STM32F4 (USART + DMA) в комплекте. Хостовые тесты test_transport и test_gui проходят.
36 lines
1.1 KiB
CMake
36 lines
1.1 KiB
CMake
cmake_minimum_required(VERSION 3.13)
|
|
project(protocan_transport C)
|
|
|
|
set(CMAKE_C_STANDARD 99)
|
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
|
|
|
# Ядро библиотеки: платформенных зависимостей нет, собирается под что угодно.
|
|
add_library(protocan_transport STATIC
|
|
src/pcan_crc.c
|
|
src/pcan_frame.c
|
|
src/pcan_id.c
|
|
src/pcan_link.c
|
|
src/pcan_ring.c
|
|
src/pcan_gas.c
|
|
)
|
|
|
|
target_include_directories(protocan_transport PUBLIC include)
|
|
|
|
if(MSVC)
|
|
target_compile_options(protocan_transport PRIVATE /W4)
|
|
else()
|
|
target_compile_options(protocan_transport PRIVATE -Wall -Wextra -Wpedantic)
|
|
endif()
|
|
|
|
# Порт ports/stm32f4 сюда не входит: ему нужен CMSIS-заголовок stm32f4xx.h,
|
|
# он подключается напрямую в проект прошивки.
|
|
|
|
option(PCAN_BUILD_TESTS "Собирать тесты" ON)
|
|
|
|
if(PCAN_BUILD_TESTS)
|
|
enable_testing()
|
|
add_executable(test_transport tests/test_transport.c)
|
|
target_link_libraries(test_transport PRIVATE protocan_transport)
|
|
add_test(NAME transport COMMAND test_transport)
|
|
endif()
|