Прошивка получает две роли, выбираемые compile-time env; общий код собирается в оба env, специфичный — через build_src_filter, без мёртвого кода неактивной роли. Роль публикуется в USB product string (CART-TX/CART-RX), по которой ПК находит нужный порт. - app_tx.cpp: как раньше формирует SBUS на локальный провод и дополнительно шлёт те же ch[16] по USB кадром CONTROL; отвечает на HELLO кадром IDENT. Старый проводной функционал не изменён. - app_rx.cpp: принимает CONTROL по USB и гонит SBUS на провод строго каждые 50 мс из последнего состояния. FAILSAFE: нет свежего CONTROL дольше 150 мс -> нейтраль с флагом failsafe (срабатывает и при обрыве USB/зависании ПК); сетевой флаг failsafe транслируется в бит SBUS. - platformio.ini: env cart_tx/cart_rx, макросы роли и USB_PRODUCT_STRING. - удалён монолитный main.cpp (логика разнесена по модулям). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
33 lines
1.2 KiB
INI
33 lines
1.2 KiB
INI
; Две роли одной прошивки тележки, выбираются на этапе сборки:
|
|
; pio run -e cart_tx — пульт -> локальный SBUS + отправка по USB на ПК
|
|
; pio run -e cart_rx — приём по USB с ПК -> SBUS на драйвер колёс
|
|
; Роль публикуется в USB product string (CART-TX / CART-RX), по которой ПК-сервер
|
|
; (tools/bridge.py) находит нужный порт. Общий код (sbus, usb_link) собирается в
|
|
; оба env; специфичный — через build_src_filter, без мёртвого кода неактивной роли.
|
|
|
|
[env]
|
|
platform = ststm32
|
|
board = genericSTM32G431CB
|
|
framework = arduino
|
|
upload_protocol = stlink
|
|
debug_tool = stlink
|
|
monitor_speed = 115200
|
|
build_flags =
|
|
-DUSBCON
|
|
-DUSBD_USE_CDC
|
|
build_src_filter = -<*> +<sbus.cpp> +<usb_link.cpp>
|
|
|
|
[env:cart_tx]
|
|
build_flags =
|
|
${env.build_flags}
|
|
-DCART_ROLE_TX
|
|
-DUSB_PRODUCT_STRING="\"CART-TX\""
|
|
build_src_filter = ${env.build_src_filter} +<stick.cpp> +<app_tx.cpp>
|
|
|
|
[env:cart_rx]
|
|
build_flags =
|
|
${env.build_flags}
|
|
-DCART_ROLE_RX
|
|
-DUSB_PRODUCT_STRING="\"CART-RX\""
|
|
build_src_filter = ${env.build_src_filter} +<app_rx.cpp>
|