EtherCAT.Simulator.Slave (ethercat v0.4.2)

Copy Markdown View Source

Device and signal-level API for simulated EtherCAT slaves.

Use this module to hydrate simulated devices from real EtherCAT.Slave.Driver modules and to inspect or override named signal values on a running simulator.

from_driver/2 can hydrate a simulated device from a real EtherCAT.Slave.Driver plus an optional simulator-side companion module such as MyDriver.Simulator.

Summary

Types

device()

driver()

@type driver() :: module()

signal_ref()

@type signal_ref() :: {atom(), atom()}

Functions

connect(arg1, arg2)

@spec connect(signal_ref(), signal_ref()) ::
  :ok | {:error, :not_found | :unknown_signal | :invalid_value}

connections()

@spec connections() :: {:ok, [map()]} | {:error, :not_found | :timeout}

disconnect(arg1, arg2)

@spec disconnect(signal_ref(), signal_ref()) :: :ok | {:error, :not_found}

from_driver(driver, opts \\ [])

@spec from_driver(
  driver(),
  keyword()
) :: device()

get_value(slave_name, signal_name)

@spec get_value(atom(), atom()) ::
  {:ok, term()} | {:error, :not_found | :unknown_signal}

set_value(slave_name, signal_name, value)

@spec set_value(atom(), atom(), term()) ::
  :ok | {:error, :not_found | :unknown_signal | :invalid_value}

signal_definitions(slave_name)

@spec signal_definitions(device()) :: %{optional(atom()) => map()}
@spec signal_definitions(atom()) ::
  {:ok, %{optional(atom()) => map()}} | {:error, :not_found}

signals(slave_name)

@spec signals(device()) :: [atom()]
@spec signals(atom()) :: {:ok, [atom()]} | {:error, :not_found}

subscribe(slave_name)

@spec subscribe(atom()) :: :ok | {:error, :not_found}

subscribe(slave_name, signal_name)

@spec subscribe(atom(), atom() | :all) :: :ok | {:error, :not_found}

subscribe(slave_name, signal_name, subscriber)

@spec subscribe(atom(), atom() | :all, pid()) :: :ok | {:error, :not_found}

unsubscribe(slave_name)

@spec unsubscribe(atom()) :: :ok | {:error, :not_found}

unsubscribe(slave_name, signal_name)

@spec unsubscribe(atom(), atom() | :all) :: :ok | {:error, :not_found}

unsubscribe(slave_name, signal_name, subscriber)

@spec unsubscribe(atom(), atom() | :all, pid()) :: :ok | {:error, :not_found}