xref: /DragonOS/kernel/src/driver/video/console/dummycon.rs (revision 418ad41fd84c15ed7e132e56970150ac38fc24a9)
1*418ad41fSLoGin use alloc::sync::Arc;
2*418ad41fSLoGin use system_error::SystemError;
3*418ad41fSLoGin 
4*418ad41fSLoGin use crate::driver::tty::{
5*418ad41fSLoGin     console::ConsoleSwitch,
6*418ad41fSLoGin     termios::WindowSize,
7*418ad41fSLoGin     tty_driver::TtyOperation,
8*418ad41fSLoGin     virtual_terminal::virtual_console::{CursorOperation, ScrollDir, VirtualConsoleData},
9*418ad41fSLoGin };
10*418ad41fSLoGin 
11*418ad41fSLoGin lazy_static! {
12*418ad41fSLoGin     pub static ref DUMMY_CONSOLE: Arc<DummyConsole> = Arc::new(DummyConsole::new());
13*418ad41fSLoGin }
14*418ad41fSLoGin 
15*418ad41fSLoGin #[inline]
16*418ad41fSLoGin #[allow(dead_code)]
dummy_console() -> Arc<DummyConsole>17*418ad41fSLoGin pub fn dummy_console() -> Arc<DummyConsole> {
18*418ad41fSLoGin     DUMMY_CONSOLE.clone()
19*418ad41fSLoGin }
20*418ad41fSLoGin 
21*418ad41fSLoGin pub struct DummyConsole;
22*418ad41fSLoGin 
23*418ad41fSLoGin impl DummyConsole {
24*418ad41fSLoGin     pub const COLUNMS: usize = 80;
25*418ad41fSLoGin     pub const ROWS: usize = 25;
new() -> Self26*418ad41fSLoGin     pub const fn new() -> Self {
27*418ad41fSLoGin         DummyConsole
28*418ad41fSLoGin     }
29*418ad41fSLoGin }
30*418ad41fSLoGin 
31*418ad41fSLoGin impl ConsoleSwitch for DummyConsole {
con_getxy( &self, _vc_data: &VirtualConsoleData, _pos: usize, ) -> Result<(usize, usize, usize), SystemError>32*418ad41fSLoGin     fn con_getxy(
33*418ad41fSLoGin         &self,
34*418ad41fSLoGin         _vc_data: &VirtualConsoleData,
35*418ad41fSLoGin         _pos: usize,
36*418ad41fSLoGin     ) -> Result<(usize, usize, usize), SystemError> {
37*418ad41fSLoGin         Ok((0, 0, 0))
38*418ad41fSLoGin     }
39*418ad41fSLoGin 
con_build_attr( &self, _vc_data: &VirtualConsoleData, _color: u8, _intensity: crate::driver::tty::virtual_terminal::virtual_console::VirtualConsoleIntensity, _blink: bool, _underline: bool, _reverse: bool, _italic: bool, ) -> Result<u8, SystemError>40*418ad41fSLoGin     fn con_build_attr(
41*418ad41fSLoGin         &self,
42*418ad41fSLoGin         _vc_data: &VirtualConsoleData,
43*418ad41fSLoGin         _color: u8,
44*418ad41fSLoGin         _intensity: crate::driver::tty::virtual_terminal::virtual_console::VirtualConsoleIntensity,
45*418ad41fSLoGin         _blink: bool,
46*418ad41fSLoGin         _underline: bool,
47*418ad41fSLoGin         _reverse: bool,
48*418ad41fSLoGin         _italic: bool,
49*418ad41fSLoGin     ) -> Result<u8, SystemError> {
50*418ad41fSLoGin         Ok(0)
51*418ad41fSLoGin     }
con_init(&self, vc_data: &mut VirtualConsoleData, init: bool) -> Result<(), SystemError>52*418ad41fSLoGin     fn con_init(&self, vc_data: &mut VirtualConsoleData, init: bool) -> Result<(), SystemError> {
53*418ad41fSLoGin         vc_data.color_mode = true;
54*418ad41fSLoGin 
55*418ad41fSLoGin         if init {
56*418ad41fSLoGin             vc_data.cols = Self::COLUNMS;
57*418ad41fSLoGin             vc_data.rows = Self::ROWS;
58*418ad41fSLoGin         } else {
59*418ad41fSLoGin             let tty = vc_data.port().port_data().tty().unwrap();
60*418ad41fSLoGin             tty.resize(
61*418ad41fSLoGin                 tty.clone(),
62*418ad41fSLoGin                 WindowSize::new(Self::ROWS as u16, Self::COLUNMS as u16, 0, 0),
63*418ad41fSLoGin             )?;
64*418ad41fSLoGin         }
65*418ad41fSLoGin 
66*418ad41fSLoGin         Ok(())
67*418ad41fSLoGin     }
68*418ad41fSLoGin 
con_deinit(&self) -> Result<(), SystemError>69*418ad41fSLoGin     fn con_deinit(&self) -> Result<(), SystemError> {
70*418ad41fSLoGin         Ok(())
71*418ad41fSLoGin     }
72*418ad41fSLoGin 
con_clear( &self, _vc_data: &mut VirtualConsoleData, _sy: usize, _sx: usize, _height: usize, _width: usize, ) -> Result<(), SystemError>73*418ad41fSLoGin     fn con_clear(
74*418ad41fSLoGin         &self,
75*418ad41fSLoGin         _vc_data: &mut VirtualConsoleData,
76*418ad41fSLoGin         _sy: usize,
77*418ad41fSLoGin         _sx: usize,
78*418ad41fSLoGin         _height: usize,
79*418ad41fSLoGin         _width: usize,
80*418ad41fSLoGin     ) -> Result<(), SystemError> {
81*418ad41fSLoGin         Ok(())
82*418ad41fSLoGin     }
83*418ad41fSLoGin 
con_putc( &self, _vc_data: &VirtualConsoleData, _ch: u16, _ypos: u32, _xpos: u32, ) -> Result<(), SystemError>84*418ad41fSLoGin     fn con_putc(
85*418ad41fSLoGin         &self,
86*418ad41fSLoGin         _vc_data: &VirtualConsoleData,
87*418ad41fSLoGin         _ch: u16,
88*418ad41fSLoGin         _ypos: u32,
89*418ad41fSLoGin         _xpos: u32,
90*418ad41fSLoGin     ) -> Result<(), SystemError> {
91*418ad41fSLoGin         Ok(())
92*418ad41fSLoGin     }
93*418ad41fSLoGin 
con_putcs( &self, _vc_data: &VirtualConsoleData, _buf: &[u16], _count: usize, _ypos: u32, _xpos: u32, ) -> Result<(), SystemError>94*418ad41fSLoGin     fn con_putcs(
95*418ad41fSLoGin         &self,
96*418ad41fSLoGin         _vc_data: &VirtualConsoleData,
97*418ad41fSLoGin         _buf: &[u16],
98*418ad41fSLoGin         _count: usize,
99*418ad41fSLoGin         _ypos: u32,
100*418ad41fSLoGin         _xpos: u32,
101*418ad41fSLoGin     ) -> Result<(), SystemError> {
102*418ad41fSLoGin         Ok(())
103*418ad41fSLoGin     }
104*418ad41fSLoGin 
con_cursor(&self, _vc_data: &VirtualConsoleData, _op: CursorOperation)105*418ad41fSLoGin     fn con_cursor(&self, _vc_data: &VirtualConsoleData, _op: CursorOperation) {
106*418ad41fSLoGin         // Do nothing
107*418ad41fSLoGin     }
108*418ad41fSLoGin 
con_set_palette( &self, _vc_data: &VirtualConsoleData, _color_table: &[u8], ) -> Result<(), SystemError>109*418ad41fSLoGin     fn con_set_palette(
110*418ad41fSLoGin         &self,
111*418ad41fSLoGin         _vc_data: &VirtualConsoleData,
112*418ad41fSLoGin         _color_table: &[u8],
113*418ad41fSLoGin     ) -> Result<(), SystemError> {
114*418ad41fSLoGin         Ok(())
115*418ad41fSLoGin     }
116*418ad41fSLoGin 
con_scroll( &self, _vc_data: &mut VirtualConsoleData, _top: usize, _bottom: usize, _dir: ScrollDir, _nr: usize, ) -> bool117*418ad41fSLoGin     fn con_scroll(
118*418ad41fSLoGin         &self,
119*418ad41fSLoGin         _vc_data: &mut VirtualConsoleData,
120*418ad41fSLoGin         _top: usize,
121*418ad41fSLoGin         _bottom: usize,
122*418ad41fSLoGin         _dir: ScrollDir,
123*418ad41fSLoGin         _nr: usize,
124*418ad41fSLoGin     ) -> bool {
125*418ad41fSLoGin         false
126*418ad41fSLoGin     }
127*418ad41fSLoGin }
128