Port of the C/BTstack BLE-MIDI keypad firmware to Rust (embassy + cyw43 + trouble). 16-pad RGB keypad (APA102 SPI + I2C button expander), BLE-MIDI 1.0 GATT server (full codec: sysex, running-status, real-time), octave display on BOOTSEL, onboard LED heartbeat, USB serial logging. - src/keypad.rs Pimoroni RGB Keypad driver - src/midi_keypad.rs pad->Note On/Off + LED response state machine - src/codec.rs BLE-MIDI 1.0 codec (port of rppicomidi, MIT) - src/main.rs cyw43 BT bring-up + trouble GATT + MIDI pump - src/octave.rs octave digit display on BOOTSEL GPL-3.0-or-later; codec.rs retains its MIT (rppicomidi) attribution.
25 lines
825 B
Rust
25 lines
825 B
Rust
//! Build script: place memory.x on the linker search path and set up the
|
|
//! RP2040 + defmt linker scripts. The CYW43 firmware blobs are committed
|
|
//! under `cyw43-firmware/` (no network access needed at build time).
|
|
|
|
use std::env;
|
|
use std::fs::File;
|
|
use std::io::Write;
|
|
use std::path::PathBuf;
|
|
|
|
fn main() {
|
|
let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap());
|
|
File::create(out.join("memory.x"))
|
|
.unwrap()
|
|
.write_all(include_bytes!("memory.x"))
|
|
.unwrap();
|
|
println!("cargo::rustc-link-search={}", out.display());
|
|
|
|
println!("cargo::rerun-if-changed=memory.x");
|
|
|
|
println!("cargo::rustc-link-arg-bins=--nmagic");
|
|
println!("cargo::rustc-link-arg-bins=-Tlink.x");
|
|
println!("cargo::rustc-link-arg-bins=-Tlink-rp.x");
|
|
println!("cargo::rustc-link-arg-bins=-Tdefmt.x");
|
|
}
|