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:
28
c/protocan-transport/include/pcan_crc.h
Normal file
28
c/protocan-transport/include/pcan_crc.h
Normal file
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* @file pcan_crc.h
|
||||
* @brief CRC-16/CCITT-FALSE: poly 0x1021, init 0xFFFF, без рефлексии,
|
||||
* без финального XOR. Контрольное значение для "123456789" - 0x29B1.
|
||||
*/
|
||||
#ifndef PCAN_CRC_H
|
||||
#define PCAN_CRC_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "pcan_config.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** Начальное значение для инкрементального расчёта. */
|
||||
#define PCAN_CRC_INIT 0xFFFFU
|
||||
|
||||
uint16_t pcan_crc16_update(uint16_t crc, uint8_t byte);
|
||||
uint16_t pcan_crc16(const uint8_t *data, size_t len);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* PCAN_CRC_H */
|
||||
Reference in New Issue
Block a user