use core::future::Future;
use crate::protocol_layer::message::data::{epr_mode, request, sink_capabilities, source_capabilities};
use crate::units::Power;
#[derive(Debug)]
pub enum Event {
None,
RequestSprSourceCapabilities,
RequestEprSourceCapabilities,
EnterEprMode(Power),
ExitEprMode,
RequestPower(request::PowerSource),
}
pub trait DevicePolicyManager {
fn inform(&mut self, _source_capabilities: &source_capabilities::SourceCapabilities) -> impl Future<Output = ()> {
async {}
}
fn request(
&mut self,
source_capabilities: &source_capabilities::SourceCapabilities,
) -> impl Future<Output = request::PowerSource> {
async {
request::PowerSource::new_fixed(
request::CurrentRequest::Highest,
request::VoltageRequest::Safe5V,
source_capabilities,
)
.unwrap()
}
}
fn transition_power(&mut self, _accepted: &request::PowerSource) -> impl Future<Output = ()> {
async {}
}
fn hard_reset(&mut self) -> impl Future<Output = ()> {
async {}
}
fn epr_mode_entry_failed(&mut self, _reason: epr_mode::DataEnterFailed) -> impl Future<Output = ()> {
async {}
}
fn sink_capabilities(&self) -> sink_capabilities::SinkCapabilities {
sink_capabilities::SinkCapabilities::new_vsafe5v_only(100)
}
fn get_event(
&mut self,
_source_capabilities: &source_capabilities::SourceCapabilities,
) -> impl Future<Output = Event> {
async { core::future::pending().await }
}
}