diff --git a/README.md b/README.md index efb9f45..030dc3b 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,10 @@ BLE, both on the same Bluetooth stack. This is the harder of the two routes. If you want the boring one that works first go, see `ps4-lego-bridge` — two boards and a UART between them. +**Build and deploy instructions: [docs/BUILD.md](docs/BUILD.md).** This will not +compile out of the box — the board package ships the BTstack headers but does +not put them on the include path, and that has to be fixed first. + ## How it avoids the stack collision The reason the obvious sketch fails is that Bluepad32 (BTstack) and Legoino @@ -38,19 +42,14 @@ then `BP32.enableNewBluetoothConnections(true)` opens up for the pad. Bluepad32' inquiry and LE scan otherwise run at the same time as our LE create-connection and the hub connects unreliably or not at all. -## Setup +## Layout -1. Preferences → Additional board manager URLs: - `https://raw.githubusercontent.com/ricardoquesada/esp32-arduino-lib-builder/master/bluepad32_files/package_esp32_bluepad32_index.json` -2. Boards Manager → install **esp32_bluepad32**. -3. Tools → Board → **esp32_bluepad32** → ESP32 Dev Module. Must be the original - ESP32 (WROOM/WROVER) — S3/C3/C6/H2 have no Bluetooth Classic. -4. Partition scheme: **Huge APP**. BTstack with both transports plus the GATT - client will not fit the default. -5. Put your hub addresses in `HUB_ADDR_STR`, flash, watch the serial monitor. - -Do not install Legoino or NimBLE-Arduino. If they end up in the build you are -back to two host stacks. +``` +ps4_lego_onebrain/ps4_lego_onebrain.ino the sketch +docs/BUILD.md install, include-path fix, first run +docs/platform.local.txt the include-path override, for restoring + after a Bluepad32 package update +``` ## The protocol, in full @@ -81,11 +80,12 @@ Full spec: https://lego.github.io/lego-ble-wireless-protocol-docs/ ## What to expect on the bench -Verified from documentation: the Bluepad32 board-package install, the threading -contract and `btstack_run_loop_execute_on_main_thread()`, the BTstack GATT -client call signatures, and the LWP3 message encoding above. +Verified: the Bluepad32 board-package install, the threading contract and +`btstack_run_loop_execute_on_main_thread()`, the BTstack GATT client call +signatures, the LWP3 message encoding above, and — on Jess's machine — that +package 4.1.0 ships every header this needs under `tools\sdk\esp32\include\`. -Not verified, because it needs your hardware: +Not verified, because it needs the hardware powered up: * **Address type.** LEGO's OUI is `90:84:2B`, a public range, so the sketch uses `BD_ADDR_TYPE_LE_PUBLIC`. If the connect times out repeatedly with no LE