sl-controls created pull request seb/saltylab-firmware#714

sl-controls
Sat, 04 Apr 2026 08:32:24 -0400

714#feat(arch): CAN/UART bridge update for SAUL-TEE ESP32 architecture#

Summary

****: Rewritten for SAUL-TEE CAN protocol per

0x300 DRIVE combined frame (speed+steer+mode, i16 units)

0x301 ARM, 0x302 PID (half-float f16), 0x303 ESTOP (magic 0xE5)

0x400 ATTITUDE (pitch/speed/yaw_rate f16), 0x401 BATTERY (vbat_mv + rssi)

VESC STATUS1/4/5 decode helpers; node IDs 56 (left) / 68 (right)

****: Updated for new protocol — /cmd_vel→DRIVE, /estop→ESTOP, /saltybot/arm→ARM; publishes /saltybot/attitude + /can/battery

****: Rewritten as ESP32-IO auxiliary bridge — RC channels + sensor data RX, LED/output TX via inter-board protocol (460800 baud)

**** / ****: Updated defaults (esp32-io, 460800 baud)

Includes (hal reference doc) + updates from cfd5a15

Test plan

Verify struct.pack(">") f16 half-float works correctly for pitch/speed/yaw_rate decoding

Confirm VESC STATUS1 CAN ID calculation: (9<<8)|56 = 0x938, (9<<8)|68 = 0x944

Test stm32_cmd_node serial parsing with mock ESP32 IO frames at 460800 baud

Run can_bridge_node with slcan0 in loopback mode to verify DRIVE frame encoding

🤖 Generated with Claude Code