Добавлены реализации низкоуровневой шины для STM32G431/G474 и
STM32F407VET6 с шаблонами onewire_config.h под каждый камень.
Логика повторяет порт STM32F1: открытый сток, задержки по DWT,
запрет прерываний на один тайм-слот.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Таблицы: что делает каждая библиотека, какие у неё зависимости и что
требуется от платформы; где она уже работает; как подключать репозиторий
сабмодулем или subtree.
Отдельным разделом — что сюда не попало и почему: SETCAN/Src/protocan.c
(59 вызовов HAL), драйверы 1921vk028 на plib028, вендорные Drivers.
Там же сказано, что из них имеет смысл вытаскивать, чтобы следующий
разбор не начинался с нуля.
Собрано из SETGUI/src/gui_desktop/core (protocan, can_transport, protocol,
gas_catalog); в CAN_to_RS485/template/python лежала такая же копия.
Только stdlib: ни Qt, ни pyserial — модулям передают bytes, порт и
таймауты остаются делом вызывающего кода. Кодировщики совпадают побайтово
с c/protocan-transport, что зафиксировано эталонами в его тестах.
Добавлен __init__.py: gas_catalog импортирует protocol относительным
импортом, без пакета копия в CAN_to_RS485/template не собиралась.
Перенесена из k1921vk028/1921vk028/lib/rtc_service.
Ядро rtc_service_core.c зависит только от stddef, string и собственных
заголовков; доступ к часам и backup-памяти вынесен в rtc_service_port.h.
Порт для K1921VK028 идёт в комплекте и служит образцом для следующего МК.
Перенесён из репозитория protocan-transport, который подключался
сабмодулем в CAN_to_RS485.
Кадрирование AA 55 с CRC16 поверх любого байтового потока (RS485, RS232,
USB CDC), разбор 29-битного идентификатора, общее адресное пространство
регистров и каталог с подпиской на поток значений для SETGUI. Состояние
живёт в структурах вызывающего, поэтому в одной прошивке поднимается
сколько угодно независимых каналов. Порт STM32F4 (USART + DMA) в комплекте.
Хостовые тесты test_transport и test_gui проходят.
Перенесён из репозитория ds18b20, который подключался сабмодулем в
KONOR_ds18b20. История библиотеки осталась там; сюда пришло состояние
на момент переезда.
Ядро на C99 без stm32f10x.h и динамической памяти. Порт — пять функций
(Init, DelayUs, Reset, WriteBit, ReadBit); реализация для STM32F1 идёт
в комплекте в ports/stm32f1. Хостовые тесты на модели шины с виртуальными
датчиками проходят: tests/test_ds18b20.c.
Перенесён из KONOR_ds18b20/lib/can.
64-битный идентификатор датчика и преамбула не помещаются в восемь байт
поля данных, поэтому сообщение идёт двумя кадрами. Сборку на приёме
библиотека делает сама: кадр ROM без преамбулы и кадр неверной длины
отбрасываются и учитываются в dropped_frames.
Перенесён из KONOR_ds18b20/lib/eeprom; в OpticalTester лежала такая же копия.
Запись режется по границам страниц внутри библиотеки: микросхема
принимает до 64 байт за транзакцию, но при переходе через границу
страницы счётчик адреса заворачивается и затирает уже принятые байты.
Вызывающему коду об этом думать не нужно.
Перенесён из KONOR_ds18b20/lib/menu; в OpticalTester лежала такая же копия.
Содержимое экрана движок запрашивает обратными вызовами, поэтому один
экран описывает и статический список, и перечень датчиков переменной
длины. Рисует через Menu_Painter: от драйвера дисплея не зависит,
цвет передаётся как есть — подходит и RGB565, и монохром.
Перенесён из KONOR_ds18b20/lib/keypad; в OpticalTester лежала такая же копия.
О портах и таймерах библиотека не знает: уровни приходят обратным вызовом
read(), время — параметром Keypad_Poll(). События складываются в очередь
на восемь штук, поэтому быстрое нажатие не теряется, пока приложение
перерисовывает экран.
Перенесён из KONOR_ds18b20/lib/st7789; в OpticalTester лежала побайтово
такая же копия.
Ядро не включает заголовки МК и не заводит кадрового буфера: примитивы
пишут пиксели потоком, поэтому драйвер работает на МК с единицами
килобайт ОЗУ. Платформа подключается через ST7789_Io: обязательны
write, set_command и delay_ms, остальное — по разводке платы.
Библиотеки собираются и в Keil на Windows, и хостовыми тестами на Linux.
Без нормализации первый же коммит с другой машины показывает файл
изменённым целиком.
Репозиторий собирает переносимые библиотеки, которые до сих пор жили копиями
внутри прошивок: одни и те же st7789, keypad, menu и eeprom лежали в
KONOR_ds18b20 и OpticalTester побайтово одинаковыми и расходились при первой
же правке на месте.
CONTRIBUTING описывает критерий отбора (ядро без HAL, регистров, ОС и
динамической памяти; всё аппаратное — в порте), обязательный состав README
библиотеки и формат коммитов.