25 lines
586 B
Rust
25 lines
586 B
Rust
use alloc::vec::Vec;
|
|
|
|
use crate::xhci::data_structures::{EventRingSegmentTable, TrbRing};
|
|
|
|
pub struct EventRing {
|
|
segment_table: EventRingSegmentTable,
|
|
segments: Vec<TrbRing>,
|
|
}
|
|
|
|
impl EventRing {
|
|
pub fn new() -> Self {
|
|
let mut event_ring = Self {
|
|
segment_table: EventRingSegmentTable::new(1),
|
|
segments: [TrbRing::new(100)].into(),
|
|
};
|
|
|
|
event_ring.segment_table[0].from_trb_fing(&event_ring.segments[0]);
|
|
|
|
event_ring
|
|
}
|
|
|
|
pub fn segment_table(&self) -> &EventRingSegmentTable {
|
|
&self.segment_table
|
|
}
|
|
}
|