1
0
forked from ROMEO/nexosim

Small changes and cleanups to prepare the RPC work

This commit is contained in:
Serge Barral
2024-02-19 12:20:28 +01:00
parent 9d78e4f72a
commit 863f995f1b
25 changed files with 572 additions and 869 deletions

View File

@ -36,7 +36,7 @@ use std::pin::Pin;
use std::time::Duration;
use asynchronix::model::{InitializedModel, Model, Output};
use asynchronix::simulation::{Mailbox, SimInit};
use asynchronix::simulation::{EventSlot, Mailbox, SimInit};
use asynchronix::time::{EventKey, MonotonicTime, Scheduler};
/// Water pump.
@ -364,7 +364,8 @@ fn main() {
pump.flow_rate.connect(Tank::set_flow_rate, &tank_mbox);
// Model handles for simulation.
let mut flow_rate = pump.flow_rate.connect_slot().0;
let mut flow_rate = EventSlot::new();
pump.flow_rate.connect_sink(&flow_rate);
let controller_addr = controller_mbox.address();
let tank_addr = tank_mbox.address();

View File

@ -27,7 +27,7 @@
//! └──────────┘
//! ```
use asynchronix::model::{Model, Output, Requestor};
use asynchronix::simulation::{Mailbox, SimInit};
use asynchronix::simulation::{EventSlot, Mailbox, SimInit};
use asynchronix::time::MonotonicTime;
/// Power supply.
@ -124,10 +124,14 @@ fn main() {
psu.pwr_out.connect(Load::pwr_in, &load3_mbox);
// Model handles for simulation.
let mut psu_power = psu.power.connect_slot().0;
let mut load1_power = load1.power.connect_slot().0;
let mut load2_power = load2.power.connect_slot().0;
let mut load3_power = load3.power.connect_slot().0;
let mut psu_power = EventSlot::new();
let mut load1_power = EventSlot::new();
let mut load2_power = EventSlot::new();
let mut load3_power = EventSlot::new();
psu.power.connect_sink(&psu_power);
load1.power.connect_sink(&load1_power);
load2.power.connect_sink(&load2_power);
load3.power.connect_sink(&load3_power);
let psu_addr = psu_mbox.address();
// Start time (arbitrary since models do not depend on absolute time).

View File

@ -19,7 +19,7 @@ use std::pin::Pin;
use std::time::Duration;
use asynchronix::model::{InitializedModel, Model, Output};
use asynchronix::simulation::{Mailbox, SimInit};
use asynchronix::simulation::{EventQueue, Mailbox, SimInit};
use asynchronix::time::{MonotonicTime, Scheduler};
/// Stepper motor.
@ -200,7 +200,8 @@ fn main() {
driver.current_out.connect(Motor::current_in, &motor_mbox);
// Model handles for simulation.
let mut position = motor.position.connect_stream().0;
let mut position = EventQueue::new();
motor.position.connect_sink(&position);
let motor_addr = motor_mbox.address();
let driver_addr = driver_mbox.address();