1*2a7d773dSTingHuang use alloc::sync::Arc; 2*2a7d773dSTingHuang use super::{ 3*2a7d773dSTingHuang super::device::{ 4*2a7d773dSTingHuang Device, 5*2a7d773dSTingHuang DeviceType, 6*2a7d773dSTingHuang DeviceState 7*2a7d773dSTingHuang }, 8*2a7d773dSTingHuang CompatibleTable, platform_driver::PlatformDriver 9*2a7d773dSTingHuang }; 10*2a7d773dSTingHuang 11*2a7d773dSTingHuang /// @brief: 实现该trait的设备实例应挂载在platform总线上, 12*2a7d773dSTingHuang /// 同时应该实现Device trait 13*2a7d773dSTingHuang pub trait PlatformDevice: Device { 14*2a7d773dSTingHuang fn get_type(&self) -> DeviceType { 15*2a7d773dSTingHuang DeviceType::PlatformDev 16*2a7d773dSTingHuang } 17*2a7d773dSTingHuang 18*2a7d773dSTingHuang /// @brief: 获取设备匹配表 19*2a7d773dSTingHuang /// @parameter: None 20*2a7d773dSTingHuang /// @return: 设备匹配表 21*2a7d773dSTingHuang fn get_compatible_table(&self) -> CompatibleTable; 22*2a7d773dSTingHuang 23*2a7d773dSTingHuang /// @brief: 判断设备是否初始化 24*2a7d773dSTingHuang /// @parameter: None 25*2a7d773dSTingHuang /// @return: 如果已经初始化,返回true,否则,返回false 26*2a7d773dSTingHuang fn is_initialized(&self) -> bool; 27*2a7d773dSTingHuang 28*2a7d773dSTingHuang /// @brief: 设置设备状态 29*2a7d773dSTingHuang /// @parameter set_state: 设备状态 30*2a7d773dSTingHuang /// @return: None 31*2a7d773dSTingHuang fn set_state(&self, set_state: DeviceState); 32*2a7d773dSTingHuang 33*2a7d773dSTingHuang /// @brief: 设置platform设备驱动 34*2a7d773dSTingHuang /// @parameter driver: platform设备驱动 35*2a7d773dSTingHuang /// @return: None 36*2a7d773dSTingHuang fn set_driver(&self, driver: Option<Arc<dyn PlatformDriver>>); 37*2a7d773dSTingHuang } 38*2a7d773dSTingHuang 39