autd3_firmware_emulator/fpga/emulator/
debug.rs

1use super::{super::params::*, FPGAEmulator, memory::Memory};
2
3impl FPGAEmulator {
4    #[must_use]
5    pub fn gpio_in(&self) -> [bool; 4] {
6        [
7            (self.mem.controller_bram.borrow()[ADDR_CTL_FLAG] & (1 << CTL_FLAG_BIT_GPIO_IN_0)) != 0,
8            (self.mem.controller_bram.borrow()[ADDR_CTL_FLAG] & (1 << (CTL_FLAG_BIT_GPIO_IN_1)))
9                != 0,
10            (self.mem.controller_bram.borrow()[ADDR_CTL_FLAG] & (1 << (CTL_FLAG_BIT_GPIO_IN_2)))
11                != 0,
12            (self.mem.controller_bram.borrow()[ADDR_CTL_FLAG] & (1 << (CTL_FLAG_BIT_GPIO_IN_3)))
13                != 0,
14        ]
15    }
16
17    #[must_use]
18    pub fn debug_types(&self) -> [u8; 4] {
19        [
20            (self.mem.controller_bram.borrow()[ADDR_DEBUG_VALUE0_3] >> 8) as _,
21            (self.mem.controller_bram.borrow()[ADDR_DEBUG_VALUE1_3] >> 8) as _,
22            (self.mem.controller_bram.borrow()[ADDR_DEBUG_VALUE2_3] >> 8) as _,
23            (self.mem.controller_bram.borrow()[ADDR_DEBUG_VALUE3_3] >> 8) as _,
24        ]
25    }
26
27    #[must_use]
28    pub fn debug_values(&self) -> [u64; 4] {
29        [
30            Memory::read_bram_as::<u64>(
31                self.mem.controller_bram.borrow().as_slice(),
32                ADDR_DEBUG_VALUE0_0,
33            ) & 0x00FF_FFFF_FFFF_FFFF,
34            Memory::read_bram_as::<u64>(
35                self.mem.controller_bram.borrow().as_slice(),
36                ADDR_DEBUG_VALUE1_0,
37            ) & 0x00FF_FFFF_FFFF_FFFF,
38            Memory::read_bram_as::<u64>(
39                self.mem.controller_bram.borrow().as_slice(),
40                ADDR_DEBUG_VALUE2_0,
41            ) & 0x00FF_FFFF_FFFF_FFFF,
42            Memory::read_bram_as::<u64>(
43                self.mem.controller_bram.borrow().as_slice(),
44                ADDR_DEBUG_VALUE3_0,
45            ) & 0x00FF_FFFF_FFFF_FFFF,
46        ]
47    }
48}