use spvirit_server::PvaServer;
use spvirit_types::ScalarValue;
fn f64_of(v: &ScalarValue) -> f64 {
match v {
ScalarValue::F64(x) => *x,
_ => 0.0,
}
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let server = PvaServer::builder()
.ao("CALC:A", 0.0)
.ao("CALC:B", 0.0)
.ai("CALC:SUM", 0.0)
.ai("CALC:PROD", 0.0)
.ai("CALC:MEAN", 0.0)
.link("CALC:SUM", &["CALC:A", "CALC:B"], |v| {
ScalarValue::F64(f64_of(&v[0]) + f64_of(&v[1]))
})
.link("CALC:PROD", &["CALC:A", "CALC:B"], |v| {
ScalarValue::F64(f64_of(&v[0]) * f64_of(&v[1]))
})
.link("CALC:MEAN", &["CALC:A", "CALC:B"], |v| {
ScalarValue::F64((f64_of(&v[0]) + f64_of(&v[1])) / 2.0)
})
.build();
server.run().await
}