UART-controlled ESP32 peripheral for automated E2E Bluetooth testing. Dual-mode (Classic BT + BLE) via Bluedroid on original ESP32. Firmware (ESP-IDF v5.x, 2511 lines C): - NDJSON protocol over UART1 (115200 baud) - System commands: ping, reset, get_info, get_status - Classic BT: GAP, SPP, all 4 SSP pairing modes - BLE: GATTS, advertising, GATT service/characteristic management - 6 device personas: headset, speaker, keyboard, sensor, phone, bare - Event reporter: thread-safe async event queue to host Python MCP server (FastMCP, 1626 lines): - Async serial client with command/response correlation - Event queue with wait_for pattern matching - Tools: connection, configure, classic, ble, persona, events - MCP resources: esp32://status, esp32://events, esp32://personas Tests: 74 unit tests passing, 5 integration test stubs (skip without hardware)
36 lines
740 B
Plaintext
36 lines
740 B
Plaintext
# Bluetooth (dual-mode: Classic + BLE via Bluedroid)
|
|
CONFIG_BT_ENABLED=y
|
|
CONFIG_BT_BLUEDROID_ENABLED=y
|
|
CONFIG_BT_CLASSIC_ENABLED=y
|
|
CONFIG_BT_BLE_ENABLED=y
|
|
CONFIG_BT_A2DP_ENABLE=n
|
|
CONFIG_BT_SPP_ENABLED=y
|
|
CONFIG_BT_SSP_ENABLED=y
|
|
|
|
# GAP & GATTS
|
|
CONFIG_BT_GATTS_ENABLE=y
|
|
CONFIG_BT_GATTC_ENABLE=n
|
|
|
|
# Bluetooth controller
|
|
CONFIG_BTDM_CTRL_MODE_BTDM=y
|
|
|
|
# UART
|
|
CONFIG_ESP_CONSOLE_UART_NUM=0
|
|
|
|
# Stack sizes (Bluetooth needs generous stacks)
|
|
CONFIG_BT_BTU_TASK_STACK_SIZE=8192
|
|
CONFIG_BTDM_CTRL_HCI_MODE_VHCI=y
|
|
|
|
# NVS (for bonding storage)
|
|
CONFIG_NVS_ENABLED=y
|
|
|
|
# Logging — keep it reasonable
|
|
CONFIG_LOG_DEFAULT_LEVEL_INFO=y
|
|
CONFIG_LOG_MAXIMUM_LEVEL_DEBUG=y
|
|
|
|
# Partition table
|
|
CONFIG_PARTITION_TABLE_SINGLE_APP=y
|
|
|
|
# FreeRTOS
|
|
CONFIG_FREERTOS_HZ=1000
|