embedded-storage icon indicating copy to clipboard operation
embedded-storage copied to clipboard

Consider making capacity async

Open diondokter opened this issue 2 years ago • 2 comments

The function capacity on the async ReadNotFlash trait is not async: https://github.com/rust-embedded-community/embedded-storage/blob/master/embedded-storage-async/src/nor_flash.rs#L18

I'm trying to make a shared flash based on these traits and to do that I have an async mutex that needs to be locked. But I can't do that in a sync function.

It would also be solved by having the capacity be a constant. But there may be a good reason why it's not a constant already

diondokter avatar May 09 '23 12:05 diondokter

I'm implementing ReadNorFlash for an SD card driver (I know it's weird) and I'm running into the same issue. Getting the SD card size is an async operation but I cannot await the future because capacity is not async.

avsaase avatar Jul 19 '24 05:07 avsaase

I would be fine with making capacity async for situations like this, and also JEDEC like NorFlash implementations. I do however think that if we make it async, it should also be fallible, as that would usually incur some kind of IO operations?

Another way of solving this would be to probe for the capacity at initialization of the module (Flash or SD card), and store the size as part of the driver struct in a simple usize.

MathiasKoch avatar Jul 19 '24 07:07 MathiasKoch