libconfig: split cmd_error helper
This commit is contained in:
parent
1fb10abb75
commit
7c50b03a92
@ -1,6 +1,6 @@
|
|||||||
use core_io::{BufRead, Error, ErrorKind, Read, Result as IoResult, Seek, SeekFrom, Write};
|
use core_io::{BufRead, Error, ErrorKind, Read, Result as IoResult, Seek, SeekFrom, Write};
|
||||||
use fatfs;
|
use fatfs;
|
||||||
use libboard_zynq::sdio::{sd_card::SdCard, CmdTransferError};
|
use libboard_zynq::sdio::sd_card::SdCard;
|
||||||
use log::debug;
|
use log::debug;
|
||||||
use alloc::vec::Vec;
|
use alloc::vec::Vec;
|
||||||
|
|
||||||
@ -12,10 +12,6 @@ const PARTID_FAT32: u8 = 0x0B;
|
|||||||
const PARTID_FAT32_LBA: u8 = 0x0C;
|
const PARTID_FAT32_LBA: u8 = 0x0C;
|
||||||
const PARTID_FAT16_LBA: u8 = 0x0E;
|
const PARTID_FAT16_LBA: u8 = 0x0E;
|
||||||
|
|
||||||
fn cmd_error_to_io_error(_: CmdTransferError) -> Error {
|
|
||||||
Error::new(ErrorKind::Other, "Command transfer error")
|
|
||||||
}
|
|
||||||
|
|
||||||
const BLOCK_SIZE: usize = 512;
|
const BLOCK_SIZE: usize = 512;
|
||||||
|
|
||||||
/// SdReader struct implementing `Read + BufRead + Write + Seek` traits for `core_io`.
|
/// SdReader struct implementing `Read + BufRead + Write + Seek` traits for `core_io`.
|
||||||
@ -221,7 +217,7 @@ impl BufRead for SdReader {
|
|||||||
// reload buffer
|
// reload buffer
|
||||||
self.sd
|
self.sd
|
||||||
.read_block(self.byte_addr / (BLOCK_SIZE as u32), 1, &mut self.buffer)
|
.read_block(self.byte_addr / (BLOCK_SIZE as u32), 1, &mut self.buffer)
|
||||||
.map_err(cmd_error_to_io_error)?;
|
.map_err(|_| Error::new(ErrorKind::Other, "Command transfer error"))?;
|
||||||
self.index = (self.byte_addr as usize) % BLOCK_SIZE;
|
self.index = (self.byte_addr as usize) % BLOCK_SIZE;
|
||||||
}
|
}
|
||||||
Ok(&self.buffer[self.index..])
|
Ok(&self.buffer[self.index..])
|
||||||
@ -260,7 +256,7 @@ impl Write for SdReader {
|
|||||||
let block_addr = (self.byte_addr - self.index as u32) / (BLOCK_SIZE as u32);
|
let block_addr = (self.byte_addr - self.index as u32) / (BLOCK_SIZE as u32);
|
||||||
self.sd
|
self.sd
|
||||||
.write_block(block_addr, 1, &self.buffer)
|
.write_block(block_addr, 1, &self.buffer)
|
||||||
.map_err(cmd_error_to_io_error)?;
|
.map_err(|_| Error::new(ErrorKind::Other, "Command transfer error"))?;
|
||||||
self.dirty = false;
|
self.dirty = false;
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
Loading…
Reference in New Issue
Block a user