38 lines
738 B
Rust
38 lines
738 B
Rust
|
|
#[derive(PartialEq)]
|
|
pub struct Interrupt {
|
|
level: InterruptStatus
|
|
}
|
|
|
|
impl Interrupt {
|
|
|
|
pub fn new() -> Self {
|
|
Self {
|
|
level: InterruptStatus::InterruptOff
|
|
}
|
|
}
|
|
|
|
pub fn set_status(&mut self, newStatus: InterruptStatus) -> InterruptStatus {
|
|
let old = self.level;
|
|
self.level = newStatus;
|
|
if newStatus == InterruptStatus::InterruptOn && old == InterruptStatus::InterruptOff {
|
|
self.one_tick(1);
|
|
}
|
|
old
|
|
}
|
|
|
|
fn one_tick(&self, nb_cycle: i32) {
|
|
todo!();
|
|
}
|
|
|
|
pub fn get_status(&self) -> InterruptStatus {
|
|
self.level
|
|
}
|
|
|
|
}
|
|
|
|
#[derive(PartialEq, Clone, Copy)]
|
|
pub enum InterruptStatus {
|
|
InterruptOff,
|
|
InterruptOn
|
|
} |