#pragma once

/* ── ESP32-S3 BALANCE board — bd-66hx pin/config definitions ───────────────
 *
 * Hardware change from pre-bd-66hx design:
 *   Previously: IO43/IO44 = CAN SN65HVD230 (shared Orin+VESC bus via CANable2)
 *   After bd-66hx: IO43/IO44 = CH343 UART0 (Orin serial comms)
 *                  IO2/IO1   = CAN SN65HVD230 rewired (VESC-only bus)
 *
 * The SN65HVD230 transceiver physical wiring must be updated from IO43/44
 * to IO2/IO1 when deploying this firmware.  See docs/SAUL-TEE-SYSTEM-REFERENCE.md.
 */

/* ── Orin serial (CH343 USB-to-UART, 1a86:55d3 on Orin side) ── */
#define ORIN_UART_PORT          UART_NUM_0
#define ORIN_UART_BAUD          460800
#define ORIN_UART_TX_GPIO       43      /* ESP32→CH343 RXD */
#define ORIN_UART_RX_GPIO       44      /* CH343 TXD→ESP32 */
#define ORIN_UART_RX_BUF        1024
#define ORIN_TX_QUEUE_DEPTH     16

/* ── VESC CAN TWAI (SN65HVD230 transceiver, rewired for bd-66hx) ── */
#define VESC_CAN_TX_GPIO        2       /* ESP32 TWAI TX → SN65HVD230 TXD */
#define VESC_CAN_RX_GPIO        1       /* SN65HVD230 RXD → ESP32 TWAI RX */
#define VESC_CAN_RX_QUEUE       32

/* VESC node IDs — matched to bd-wim1 TELEM_VESC_LEFT/RIGHT mapping */
#define VESC_ID_A               56u     /* TELEM_VESC_LEFT  (0x81) */
#define VESC_ID_B               68u     /* TELEM_VESC_RIGHT (0x82) */

/* ── Safety / timing ── */
#define HB_TIMEOUT_MS           500u    /* heartbeat watchdog: disarm if exceeded */
#define DRIVE_TIMEOUT_MS        500u    /* drive command staleness timeout */
#define TELEM_STATUS_PERIOD_MS  100u    /* 10 Hz status telemetry to Orin */
#define TELEM_VESC_PERIOD_MS    100u    /* 10 Hz VESC telemetry to Orin */

/* ── Drive → VESC RPM scaling ── */
#define RPM_PER_SPEED_UNIT      5       /* speed_units=1000 → 5000 ERPM */
#define RPM_PER_STEER_UNIT      3       /* steer differential scale */
