Skip to main content

DeviceHandler

Struct DeviceHandler 

Source
pub struct DeviceHandler {
    pub dyn_param: HashMap<String, String>,
    /* private fields */
}

Fields§

§dyn_param: HashMap<String, String>

Dynamic parameters for input substitution (e.g., passwords, system names)

Implementations§

Source§

impl DeviceHandler

Source

pub fn is_equivalent(&self, other: &DeviceHandler) -> bool

Checks if two DeviceHandlers are equivalent (used for connection parameter comparison).

Source

pub fn new<I, S>( prompt: Vec<(String, I)>, prompt_with_sys: Vec<(String, S, String)>, write: Vec<(String, (bool, String, bool), I)>, more_regex: I, error_regex: I, edges: Vec<(String, String, String, bool, bool)>, ignore_errors: I, dyn_param: HashMap<String, String>, ) -> Result<DeviceHandler, ConnectError>
where S: AsRef<str> + Clone, I: IntoIterator<Item = S>,

Creates a new DeviceHandler with the specified state machine configuration.

§Arguments
  • prompt - List of (state_name, regex_patterns) for basic prompts
  • prompt_with_sys - List of (state_name, regex_pattern, capture_group) for prompts with system names
  • write - List of (state_name, input_config, regex_patterns) for states requiring input
  • more_regex - Regex patterns that match pagination prompts (e.g., “–More–”)
  • error_regex - Regex patterns that match error messages
  • edges - State transition graph: (from, command, to, is_exit, needs_format)
  • ignore_errors - Regex patterns for errors that should be ignored
  • dyn_param - Dynamic parameters for command/input substitution
Source

pub fn read(&mut self, line: &str)

Reads a line of output and updates the current state.

This method should be called for each line of output received from the device. It automatically updates the internal state and captures values from prompts when configured to do so.

§Arguments
  • line - A line of output from the device
Source

pub fn read_prompt(&mut self, line: &str) -> bool

Checks if a line matches a prompt pattern.

This is useful for detecting when the device is ready to accept the next command.

§Arguments
  • line - The line to check
§Returns

true if the line matches any prompt pattern, false otherwise

Source

pub fn read_sys_prompt(&mut self, line: &str) -> bool

Checks if a line matches a system-specific prompt pattern.

§Arguments
  • line - The line to check
§Returns

true if the line matches a system-specific prompt, false otherwise

Source

pub fn read_need_write(&mut self, line: &str) -> Option<(String, bool)>

Checks if a line requires input and returns the input to send.

Some device states require automatic input (e.g., password prompts, confirmation). This method checks if the current line triggers such a state and returns the appropriate input.

§Arguments
  • line - The line to check
§Returns

Some((input, should_record)) if input is required, where:

  • input is the string to send
  • should_record indicates whether this input should be included in the output

None if no input is required

Source

pub fn current_state(&self) -> &str

Returns the current state name.

§Returns

The name of the current state

Source

pub fn current_sys(&self) -> Option<&str>

Returns the currently captured system name, if available.

Source

pub fn current_prompt(&self) -> Option<&str>

Returns last prompt text matched by the state machine.

Source

pub fn states(&self) -> Vec<String>

Returns all declared state names.

Source

pub fn edges(&self) -> Vec<(String, String, String, bool, bool)>

Returns all configured transition edges.

Source

pub fn diagnose_state_machine(&self) -> StateMachineDiagnostics

Analyze the state transition graph for common template issues.

Source

pub fn error(&self) -> bool

Checks if the current state is an error state.

§Returns

true if the device is currently in an error state, false otherwise

Source

pub fn trans_state_write( &self, state: &str, sys: Option<&String>, ) -> Result<Vec<(String, String)>, ConnectError>

Calculates the commands needed to transition to a target state.

This method uses breadth-first search (BFS) to find the shortest path from
the current state to the target state in the state transition graph.

§Arguments
  • state - The target state name
  • sys - Optional system name for state-specific transitions
§Returns

A vector of (command, target_state) pairs representing the path to take, or an error if the target state is unreachable.

§Errors

Returns ConnectError::UnreachableState if there’s no path to the target state.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Classify for T

Source§

type Classified = T

Source§

fn classify(self) -> T

Source§

impl<T> Declassify for T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V