Skip to content

add KISS modem role (port of upstream examples/kiss_modem) - #109

Merged
liquidraver merged 1 commit into
liquidraver:devfrom
recrof:kiss-radio-support
Oct 15, 2026
Merged

liquidraver merged 1 commit into
liquidraver:devfrom
recrof:kiss-radio-support

Conversation

@recrof

@recrof recrof commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator

Raw LoRa packets to and from a host over the USB/console serial port, plus upstream's SetHardware extensions (identity, crypto, radio config, stats).

  • app/KissModem.cpp/h: upstream text, ZephCore changes fenced: an LBT refusal returns to CSMA until the wait-clear bound; a TX times out only once the radio has concluded (as Dispatcher::loop); SetRadio outside the ZC_RADIO_* ranges is refused; msUntilNextTx() for the event loop.
  • src/main_kiss_modem.cpp: event-driven composition root; runs the radio maintenance the Dispatcher would. Identity in /lfs/repeater/_main.id.
  • adapters/transport/ZephyrUartStream: Arduino Stream over IRQ RX/TX rings.
  • boards/common/kiss_modem.conf: role, BT off, console driver off.
  • LoRaRadio::getCurrentRSSI(), Print::availableForWrite().
  • UI mesh-action stubs for every non-companion role.

Tested on 2x XIAO ESP32-C3 + Wio-SX1262 at 869.423 MHz SF7/62.5/CR5. Built for xiao_esp32c3, rak4631, lora_e5_mini; host tests pass.

Raw LoRa packets to and from a host over the USB/console serial port, plus
upstream's SetHardware extensions (identity, crypto, radio config, stats).

- app/KissModem.cpp/h: upstream text, ZephCore changes fenced: an LBT
  refusal returns to CSMA until the wait-clear bound; a TX times out only
  once the radio has concluded (as Dispatcher::loop); SetRadio outside the
  ZC_RADIO_* ranges is refused; msUntilNextTx() for the event loop.
- src/main_kiss_modem.cpp: event-driven composition root; runs the radio
  maintenance the Dispatcher would. Identity in /lfs/repeater/_main.id.
- adapters/transport/ZephyrUartStream: Arduino Stream over IRQ RX/TX rings.
- boards/common/kiss_modem.conf: role, BT off, console driver off.
- LoRaRadio::getCurrentRSSI(), Print::availableForWrite().
- UI mesh-action stubs for every non-companion role.

Tested on 2x XIAO ESP32-C3 + Wio-SX1262 at 869.423 MHz SF7/62.5/CR5.
Built for xiao_esp32c3, rak4631, lora_e5_mini; host tests pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@recrof
recrof requested a review from liquidraver October 14, 2026 16:48
@liquidraver
liquidraver merged commit 2544c24 into liquidraver:dev Oct 15, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants