The buffer-full branch writes the forced '\r' to command[sizeof-1], but the
line-complete check below tests command[len-1] (== sizeof-2 when the buffer
is full), so the line never completes: the read loop's condition
(len < sizeof-1) stays false forever and the CLI stops reading serial input
until reboot. Writing at [sizeof-1] also overwrites the string's NUL
terminator, so the next strlen() reads past the buffer (UB).
Write the '\r' at command[sizeof-2] instead — exactly the position the
completion check tests. The overflowed input is then processed as an
(unknown) command, the buffer resets, and the CLI keeps working.
Reproduced on hardware (T1000-E repeater): ~53 arrow-key presses in an
attached terminal (3-byte ESC[A escape sequences, 159 bytes with no CR)
filled the buffer and the CLI never accepted a command again until reboot.
The same copy-pasted pattern is fixed in simple_repeater, simple_sensor,
simple_room_server and simple_secure_chat.
If Bluefruit.begin fails, BLE OTA mode won't actually start and the board might require a reboot to reattempt.
Fixes:
- Bluefruit.begin returns false in NRF52Board.startOTAUpdate if OTA mode fails to start. User is notified of the fault through existing error message in CommonCLI and can reattempt "start ota" command.
mkdocs will only consider the first H1 (if any) and subheaders under it for the table of contents
this increases the header levels of everything below "important concepts" by 1 so that the table of contents correctly resolves them
The room server never supported RX boosted gain, while the repeater
does. Three consequences on SX1262/SX1268 boards:
- boosted gain was never applied to the radio at boot, so a room server
ran in power-saving RX mode while an identical repeater ran boosted -
a real receive-sensitivity difference with nothing pointing at it
- _prefs.rx_boosted_gain was never initialised (the prefs are memset to
0 before defaults are set), so it defaulted to off
- 'set radio.rxgain on' replied "Error: unsupported" but CommonCLI had
already written the value to prefs and saved them, so a stale setting
survived reboot and was never applied
Mirror the repeater's implementation: initialise the pref default under
the same USE_SX1262/USE_SX1268 and SX126X_RX_BOOSTED_GAIN guards, apply
it during radio init, and override setRxBoostedGain() so the CLI reports
success and takes effect.
Built Heltec_v3_room_server (SX1262) and LilyGo_T3S3_sx1276_room_server
(guards compile out cleanly).