Skip to content
Snippets Groups Projects
Verified Commit 43d663fd authored by João Magalhães's avatar João Magalhães :rocket:
Browse files

chore: more abstract write operations

parent f188cabc
No related branches found
No related tags found
1 merge request!59`StateComponent` creation and implementation
Pipeline #5068 failed
use std::{
io::{Cursor, Read},
io::{Cursor, Read, Write},
mem::size_of,
};
use crate::error::Error;
#[inline(always)]
pub fn write_u8(data: &mut Cursor<Vec<u8>>, value: u8) -> Result<(), Error> {
data.write_all(&value.to_le_bytes())?;
Ok(())
}
#[inline(always)]
pub fn write_u16(data: &mut Cursor<Vec<u8>>, value: u16) -> Result<(), Error> {
data.write_all(&value.to_le_bytes())?;
Ok(())
}
#[inline(always)]
pub fn write_u32(data: &mut Cursor<Vec<u8>>, value: u32) -> Result<(), Error> {
data.write_all(&value.to_le_bytes())?;
Ok(())
}
#[inline(always)]
pub fn read_u8(data: &mut Cursor<&[u8]>) -> Result<u8, Error> {
let mut buffer = [0x00; size_of::<u8>()];
......
//! Timer functions and structures.
use std::io::{Cursor, Write};
use std::io::Cursor;
use boytacean_common::{
data::{read_u16, read_u8},
data::{read_u16, read_u8, write_u16, write_u8},
error::Error,
};
......@@ -173,15 +173,15 @@ impl BusComponent for Timer {
impl StateComponent for Timer {
fn state(&self) -> Result<Vec<u8>, Error> {
let mut cursor = Cursor::new(vec![]);
cursor.write(&self.div.to_le_bytes())?;
cursor.write(&self.tima.to_le_bytes())?;
cursor.write(&self.tma.to_le_bytes())?;
cursor.write(&self.tac.to_le_bytes())?;
cursor.write(&self.div_clock.to_le_bytes())?;
cursor.write(&self.tima_clock.to_le_bytes())?;
cursor.write(&(self.tima_enabled as u8).to_le_bytes())?;
cursor.write(&self.tima_ratio.to_le_bytes())?;
cursor.write(&(self.int_tima as u8).to_le_bytes())?;
write_u8(&mut cursor, self.div)?;
write_u8(&mut cursor, self.tima)?;
write_u8(&mut cursor, self.tma)?;
write_u8(&mut cursor, self.tac)?;
write_u16(&mut cursor, self.div_clock)?;
write_u16(&mut cursor, self.tima_clock)?;
write_u8(&mut cursor, self.tima_enabled as u8)?;
write_u16(&mut cursor, self.tima_ratio)?;
write_u8(&mut cursor, self.int_tima as u8)?;
Ok(cursor.into_inner())
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment