# `Excansock`
[🔗](https://github.com/pavels/excansock/blob/main/lib/excansock.ex#L1)

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `close`

```elixir
@spec close(GenServer.server()) :: :ok | :error
```

Close CAN socket.

# `open`

```elixir
@spec open(GenServer.server(), binary(), boolean()) :: :ok | :error
```

Open CAN socket.

# `recv_own_messages`

```elixir
@spec recv_own_messages(GenServer.server(), boolean()) :: :ok
```

Enable / disable receiving own messages

# `send`

```elixir
@spec send(GenServer.server(), Excansock.CanFrame.t()) :: :ok
```

Send CAN message

# `set_error_filter`

```elixir
@spec set_error_filter(GenServer.server(), integer()) :: :ok
```

Set bus error filter

# `set_filters`

```elixir
@spec set_filters(GenServer.server(), [Excansock.CanFilter.t()]) :: :ok
```

Set CAN filters

# `set_loopback`

```elixir
@spec set_loopback(GenServer.server(), boolean()) :: :ok
```

Enable / disable CAN loopback

# `start_link`

```elixir
@spec start_link([term()]) :: {:ok, pid()} | {:error, term()}
```

Start up Excansock GenServer.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
