From 5f0e16e97a773480a3b09c5312c98742e7049f1d Mon Sep 17 00:00:00 2001 From: jacqueline Date: Fri, 22 Dec 2023 16:48:24 +1100 Subject: Support changing the usb msc state --- src/drivers/samd.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'src/drivers/samd.cpp') diff --git a/src/drivers/samd.cpp b/src/drivers/samd.cpp index f361513e..cf3b9c18 100644 --- a/src/drivers/samd.cpp +++ b/src/drivers/samd.cpp @@ -143,4 +143,30 @@ auto Samd::PowerDown() -> void { ESP_ERROR_CHECK(transaction.Execute(3)); } +auto Samd::UsbMassStorage(bool en) -> void { + I2CTransaction transaction; + transaction.start() + .write_addr(kAddress, I2C_MASTER_WRITE) + .write_ack(Registers::kUsbControl, en) + .stop(); + ESP_ERROR_CHECK(transaction.Execute(3)); +} + +auto Samd::UsbMassStorage() -> bool { + uint8_t raw_res; + I2CTransaction transaction; + transaction.start() + .write_addr(kAddress, I2C_MASTER_WRITE) + .write_ack(Registers::kUsbControl) + .start() + .write_addr(kAddress, I2C_MASTER_READ) + .read(&raw_res, I2C_MASTER_NACK) + .stop(); + esp_err_t res = transaction.Execute(1); + if (res != ESP_OK) { + return false; + } + return raw_res & 1; +} + } // namespace drivers -- cgit v1.2.3