[package]
name = "pm-grid"
version = "0.1.0"
edition = "2021"
description = "PM_G-1 'Grid' firmware (RP2040 / Pimoroni Pico Scroll Pack PIM545). 17x7 IS31FL3731 LED metronome — Rust sibling of pico-scroll/app.py."

[dependencies]
rp2040-hal = { version = "0.11", features = ["rt", "critical-section-impl", "defmt"] }
rp2040-boot2 = "0.3"
cortex-m = "0.7"
cortex-m-rt = "0.7"
defmt = "0.3"
defmt-rtt = "0.4"            # logs over RTT, read by `probe-rs run` (the Pi Debug Probe)
panic-probe = { version = "0.3", features = ["print-defmt"] }
embedded-hal = "1"
track-format = { path = "../track-format" }
embedded-alloc = "0.6"       # track-format parses into Vec/String → needs a global allocator
usb-device = "0.3"           # USB device stack (rp2040-hal provides the UsbBus)
usbd-midi = "0.5"            # USB-MIDI class — the Scroll Pack's only audio path (no speaker)
usbd-storage = { version = "2", features = ["bbb", "scsi", "defmt"] } # USB Mass Storage (the drive)
rp2040-flash = "0.6"         # run-from-RAM flash erase/program for the filesystem region
# 0.4.0 (git) — clean no_std IoBase/IoError model (0.3.6 needs core_io for no_std). Reads the FAT
# drive on-device (load programs.json). Pinned for reproducibility.
fatfs = { git = "https://github.com/rafalh/rust-fatfs", rev = "c4b88477", default-features = false, features = ["alloc", "lfn"] }

[profile.release]
opt-level = "s"
lto = false   # fat-LTO trips a duplicate soft-float intrinsic (__addsf3) across the USB/flash deps
codegen-units = 1
debug = 2
