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::{ use std::{
io::{Cursor, Read}, io::{Cursor, Read, Write},
mem::size_of, mem::size_of,
}; };
use crate::error::Error; 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)] #[inline(always)]
pub fn read_u8(data: &mut Cursor<&[u8]>) -> Result<u8, Error> { pub fn read_u8(data: &mut Cursor<&[u8]>) -> Result<u8, Error> {
let mut buffer = [0x00; size_of::<u8>()]; let mut buffer = [0x00; size_of::<u8>()];
......
//! Timer functions and structures. //! Timer functions and structures.
use std::io::{Cursor, Write}; use std::io::Cursor;
use boytacean_common::{ use boytacean_common::{
data::{read_u16, read_u8}, data::{read_u16, read_u8, write_u16, write_u8},
error::Error, error::Error,
}; };
...@@ -173,15 +173,15 @@ impl BusComponent for Timer { ...@@ -173,15 +173,15 @@ impl BusComponent for Timer {
impl StateComponent for Timer { impl StateComponent for Timer {
fn state(&self) -> Result<Vec<u8>, Error> { fn state(&self) -> Result<Vec<u8>, Error> {
let mut cursor = Cursor::new(vec![]); let mut cursor = Cursor::new(vec![]);
cursor.write(&self.div.to_le_bytes())?; write_u8(&mut cursor, self.div)?;
cursor.write(&self.tima.to_le_bytes())?; write_u8(&mut cursor, self.tima)?;
cursor.write(&self.tma.to_le_bytes())?; write_u8(&mut cursor, self.tma)?;
cursor.write(&self.tac.to_le_bytes())?; write_u8(&mut cursor, self.tac)?;
cursor.write(&self.div_clock.to_le_bytes())?; write_u16(&mut cursor, self.div_clock)?;
cursor.write(&self.tima_clock.to_le_bytes())?; write_u16(&mut cursor, self.tima_clock)?;
cursor.write(&(self.tima_enabled as u8).to_le_bytes())?; write_u8(&mut cursor, self.tima_enabled as u8)?;
cursor.write(&self.tima_ratio.to_le_bytes())?; write_u16(&mut cursor, self.tima_ratio)?;
cursor.write(&(self.int_tima as u8).to_le_bytes())?; write_u8(&mut cursor, self.int_tima as u8)?;
Ok(cursor.into_inner()) 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