a121_rs/processing/
metadata.rs

1use a121_sys::{acc_processing_metadata_t, ACC_MAX_NUM_SUBSWEEPS};
2
3pub struct ProcessingMetaData {
4    inner: acc_processing_metadata_t,
5}
6
7impl Default for ProcessingMetaData {
8    fn default() -> Self {
9        Self {
10            inner: acc_processing_metadata_t {
11                frame_data_length: 0,
12                sweep_data_length: 0,
13                subsweep_data_offset: [0; ACC_MAX_NUM_SUBSWEEPS as usize],
14                subsweep_data_length: [0; ACC_MAX_NUM_SUBSWEEPS as usize],
15                max_sweep_rate: 0.0,
16                high_speed_mode: false,
17            },
18        }
19    }
20}
21
22impl ProcessingMetaData {
23    pub fn new() -> Self {
24        Self::default()
25    }
26
27    /// Get a mutable reference to the metadata
28    /// # Safety
29    /// This function is unsafe because it returns a mutable reference to the metadata, which is a raw pointer
30    pub unsafe fn mut_ptr(&mut self) -> *mut acc_processing_metadata_t {
31        &mut self.inner
32    }
33
34    pub fn ptr(&self) -> *const acc_processing_metadata_t {
35        &self.inner
36    }
37
38    pub fn frame_data_length(&self) -> usize {
39        self.inner.frame_data_length as usize
40    }
41
42    pub fn sweep_data_length(&self) -> usize {
43        self.inner.sweep_data_length as usize
44    }
45
46    pub fn subsweep_data_offset(&self, index: usize) -> usize {
47        self.inner.subsweep_data_offset[index] as usize
48    }
49
50    pub fn subsweep_data_length(&self, index: usize) -> usize {
51        self.inner.subsweep_data_length[index] as usize
52    }
53
54    pub fn max_sweep_rate(&self) -> f32 {
55        self.inner.max_sweep_rate
56    }
57}