1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use crate::result::*;
use crate::ipc::sf;
use crate::mem;
use crate::version;
#[derive(Copy, Clone, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum ModuleId {
Lm = 0x29,
}
#[derive(Copy, Clone, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum State {
FullAwake = 0,
MinimumAwake = 1,
SleepReady = 2,
EssentialServicesSleepReady = 3,
EssentialServicesAwake = 4,
ShutdownReady = 5,
Invalid = 6
}
ipc_sf_define_interface_trait! {
trait IPmModule {
initialize [0, version::VersionInterval::all()]: (id: ModuleId, dependencies: sf::InMapAliasBuffer<ModuleId>) => (event_handle: sf::CopyHandle);
get_request [1, version::VersionInterval::all()]: () => (state: State, flags: u32);
acknowledge [2, version::VersionInterval::all()]: () => ();
finalize [3, version::VersionInterval::all()]: () => ();
acknowledge_ex [4, version::VersionInterval::from(version::Version::new(5,1,0))]: (state: State) => ();
}
}
ipc_sf_define_interface_trait! {
trait IPmService {
get_pm_module [0, version::VersionInterval::all()]: () => (pm_module: mem::Shared<dyn IPmModule>);
}
}