use super::net_handle;
pub use crate::wire::SupplyState;
pub(crate) mod ops {
use serde_json::json;
use crate::wire::{state_as, supply_command, unit, Op, SupplyState};
pub(crate) fn set_voltage(name: &str, volts: f64) -> Op<()> {
Op {
req: supply_command(name, "voltage", json!({ "value": volts })),
parse: unit,
}
}
pub(crate) fn set_current(name: &str, amps: f64) -> Op<()> {
Op {
req: supply_command(name, "current", json!({ "value": amps })),
parse: unit,
}
}
pub(crate) fn enable(name: &str) -> Op<()> {
Op {
req: supply_command(name, "enable", json!({})),
parse: unit,
}
}
pub(crate) fn disable(name: &str) -> Op<()> {
Op {
req: supply_command(name, "disable", json!({})),
parse: unit,
}
}
pub(crate) fn set_ocp(name: &str, amps: f64) -> Op<()> {
Op {
req: supply_command(name, "ocp", json!({ "value": amps })),
parse: unit,
}
}
pub(crate) fn set_ovp(name: &str, volts: f64) -> Op<()> {
Op {
req: supply_command(name, "ovp", json!({ "value": volts })),
parse: unit,
}
}
pub(crate) fn clear_ocp(name: &str) -> Op<()> {
Op {
req: supply_command(name, "clear_ocp", json!({})),
parse: unit,
}
}
pub(crate) fn clear_ovp(name: &str) -> Op<()> {
Op {
req: supply_command(name, "clear_ovp", json!({})),
parse: unit,
}
}
pub(crate) fn state(name: &str) -> Op<SupplyState> {
Op {
req: supply_command(name, "state", json!({})),
parse: state_as::<SupplyState>,
}
}
}
net_handle! {
sync: Supply,
async: AsyncSupply,
methods: {
fn set_voltage(volts: f64) -> () = ops::set_voltage;
fn set_current(amps: f64) -> () = ops::set_current;
fn enable() -> () = ops::enable;
fn disable() -> () = ops::disable;
fn set_ocp(amps: f64) -> () = ops::set_ocp;
fn set_ovp(volts: f64) -> () = ops::set_ovp;
fn clear_ocp() -> () = ops::clear_ocp;
fn clear_ovp() -> () = ops::clear_ovp;
fn state() -> SupplyState = ops::state;
}
}