EtherCAT.Master.Status (ethercat v0.5.0)

Copy Markdown View Source

Stable machine-readable master runtime status.

Summary

Types

configured_domain()

@type configured_domain() :: %{
  id: atom(),
  configured_cycle_time_us: pos_integer(),
  logical_base: non_neg_integer(),
  pid: pid() | nil,
  live_cycle_time_us: pos_integer() | nil
}

configured_slave()

@type configured_slave() :: %{
  name: atom(),
  station: non_neg_integer() | nil,
  server: :gen_statem.server_ref(),
  pid: pid() | nil,
  driver: module(),
  config: map(),
  target_state: :preop | :op,
  process_data: term(),
  health_poll_ms: pos_integer() | nil,
  fault: term() | nil
}

lifecycle()

@type lifecycle() ::
  :stopped
  | :idle
  | :discovering
  | :awaiting_preop
  | :preop_ready
  | :deactivated
  | :operational
  | :activation_blocked
  | :recovering

t()

@type t() :: %EtherCAT.Master.Status{
  activation_failures: %{optional(term()) => term()},
  backend: EtherCAT.Backend.t() | nil,
  bus_status: map() | nil,
  configured_domains: [configured_domain()],
  configured_slaves: [configured_slave()],
  dc_status: EtherCAT.DC.Status.t(),
  desired_target: :preop | :safeop | :op | nil,
  last_failure: map() | nil,
  lifecycle: lifecycle(),
  reference_clock: %{name: atom() | nil, station: non_neg_integer()} | nil,
  runtime_faults: %{optional(term()) => term()},
  slave_faults: %{optional(term()) => term()}
}

Functions

from_runtime(lifecycle, data, observations)

@spec from_runtime(
  lifecycle(),
  %EtherCAT.Master{
    activatable_slaves: term(),
    activation_failures: term(),
    await_callers: term(),
    await_operational_callers: term(),
    backend: term(),
    base_station: term(),
    bus_ref: term(),
    dc_config: term(),
    dc_ref: term(),
    dc_ref_station: term(),
    dc_stations: term(),
    desired_runtime_target: term(),
    domain_configs: term(),
    domain_refs: term(),
    frame_timeout_floor_ms: term(),
    frame_timeout_override_ms: term(),
    generation: term(),
    last_failure: term(),
    pending_preop: term(),
    runtime_faults: term(),
    scan_poll_ms: term(),
    scan_stable_ms: term(),
    scan_window: term(),
    slave_configs: term(),
    slave_count: term(),
    slave_faults: term(),
    slave_refs: term(),
    slaves: term()
  },
  map()
) :: t()

reference_clock_reply(status)

@spec reference_clock_reply(EtherCAT.DC.Status.t()) ::
  {:ok, %{name: atom() | nil, station: non_neg_integer()}}
  | {:error, :dc_disabled | :no_reference_clock}

stopped()

@spec stopped() :: t()