islet_rmm/rsi/
measurement.rs1use crate::measurement::MeasurementError;
2use crate::rsi::error::Error;
3use crate::rsi::Rd;
4
5pub fn read(
6 rd: &Rd,
7 index: usize,
8 out: &mut crate::measurement::Measurement,
9) -> Result<(), crate::rsi::error::Error> {
10 let measurement = rd
11 .measurements
12 .get(index)
13 .ok_or(Error::InvalidMeasurementIndex)?;
14
15 out.as_mut_slice().copy_from_slice(measurement.as_slice());
16 Ok(())
17}
18
19pub fn extend(
20 rd: &mut Rd,
21 index: usize,
22 f: impl Fn(&mut crate::measurement::Measurement) -> Result<(), MeasurementError>,
23) -> Result<(), crate::rsi::error::Error> {
24 let measurement = rd
25 .measurements
26 .get_mut(index)
27 .ok_or(Error::InvalidMeasurementIndex)?;
28
29 f(measurement)?;
30 Ok(())
31}