Files
picocalc-os-rs/src/usb.rs
2025-07-26 21:17:58 -06:00

38 lines
1022 B
Rust

use crate::{scsi::MassStorageClass, storage::SdCard};
use embassy_futures::join::{self, join};
use embassy_rp::{
gpio::Output,
peripherals::{SPI0, USB},
spi::{Async, Spi},
usb::Driver,
};
use embassy_time::Delay;
use embassy_usb::{Builder, Config};
pub async fn usb_handler(driver: Driver<'static, USB>, sdcard: SdCard) {
let mut config = Config::new(0xc0de, 0xcafe);
config.manufacturer = Some("LegitCamper");
config.product = Some("PicoCalc");
config.serial_number = Some("01001100");
config.max_power = 100;
config.max_packet_size_0 = 64;
let mut config_descriptor = [0; 256];
let mut bos_descriptor = [0; 64];
let mut control_buf = [0; 64];
let mut builder = Builder::new(
driver,
config,
&mut config_descriptor,
&mut bos_descriptor,
&mut [],
&mut control_buf,
);
let mut scsi = MassStorageClass::new(&mut builder, sdcard);
let mut usb = builder.build();
join(usb.run(), scsi.poll()).await;
}