autd3_firmware_emulator/fpga/emulator/
debug.rs1use 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}