Actually show test station status

main
rahix 1 year ago
parent 9cae0cbaa3
commit 7fa9524197

@ -53,6 +53,13 @@ fn main() -> ! {
// Ventil Zustände von den Eingängen auf die Ventilausgänge übertragen. // Ventil Zustände von den Eingängen auf die Ventilausgänge übertragen.
valve_terminal.update_valve_states(tester_io.valve_states()); valve_terminal.update_valve_states(tester_io.valve_states());
if valve_terminal.is_running(&mut dp_master) {
tester_io.set_state(tester_io::TesterStatus::ValveTerminalConnected);
} else {
tester_io.set_state(tester_io::TesterStatus::Ready);
}
let scanner_event = dp_scanner.take_last_event(); let scanner_event = dp_scanner.take_last_event();
match scanner_event { match scanner_event {
Some(dp::scan::DpScanEvent::PeripheralFound(desc)) => { Some(dp::scan::DpScanEvent::PeripheralFound(desc)) => {

@ -9,7 +9,6 @@
//! ## Ausgänge //! ## Ausgänge
//! - Leuchtmelder "Test-Station bereit" //! - Leuchtmelder "Test-Station bereit"
//! - Leuchtmelder "Ventilinsel erkannt" //! - Leuchtmelder "Ventilinsel erkannt"
//! - Leuchtmelder "Fehler"
use profirust::dp; use profirust::dp;
@ -20,8 +19,6 @@ pub enum TesterStatus {
Ready, Ready,
/// Ventilinsel erkannt und verbunden /// Ventilinsel erkannt und verbunden
ValveTerminalConnected, ValveTerminalConnected,
/// Fehler
Error,
} }
pub struct TesterIo { pub struct TesterIo {
@ -85,6 +82,10 @@ impl TesterIo {
&self.valve_states &self.valve_states
} }
pub fn set_state(&mut self, state: TesterStatus) {
self.tester_status = state;
}
pub fn update(&mut self, dp_master: &mut dp::DpMaster, events: &dp::DpEvents) { pub fn update(&mut self, dp_master: &mut dp::DpMaster, events: &dp::DpEvents) {
let peripheral = dp_master.get_mut(self.peripheral); let peripheral = dp_master.get_mut(self.peripheral);
if peripheral.is_running() && events.cycle_completed { if peripheral.is_running() && events.cycle_completed {
@ -97,11 +98,9 @@ impl TesterIo {
// Ausgänge: // Ausgänge:
// - Bit 0: Leuchtmelder "Test-Station bereit" // - Bit 0: Leuchtmelder "Test-Station bereit"
// - Bit 1: Leuchtmelder "Ventilinsel erkannt" // - Bit 1: Leuchtmelder "Ventilinsel erkannt"
// - Bit 2: Leuchtmelder "Fehler"
let outputs = match self.tester_status { let outputs = match self.tester_status {
TesterStatus::Ready => 0x01, TesterStatus::Ready => 0x01,
TesterStatus::ValveTerminalConnected => 0x02, TesterStatus::ValveTerminalConnected => 0x02,
TesterStatus::Error => 0x04,
}; };
peripheral.pi_q_mut()[0] = outputs; peripheral.pi_q_mut()[0] = outputs;
} }

@ -57,9 +57,9 @@ impl ValveTerminal {
fail_safe: false, fail_safe: false,
..Default::default() ..Default::default()
}; };
let mut buffer_inputs = vec![0u8; 0].leak(); let buffer_inputs = vec![0u8; 0].leak();
let mut buffer_outputs = vec![0u8; 2].leak(); let buffer_outputs = vec![0u8; 2].leak();
let mut buffer_diagnostics = vec![0u8; 16].leak(); let buffer_diagnostics = vec![0u8; 16].leak();
let handle = dp_master.add( let handle = dp_master.add(
dp::Peripheral::new(default_address, options, buffer_inputs, buffer_outputs) dp::Peripheral::new(default_address, options, buffer_inputs, buffer_outputs)
.with_diag_buffer(buffer_diagnostics), .with_diag_buffer(buffer_diagnostics),

Loading…
Cancel
Save