lib/ssd1306.ex

defmodule SSD1306 do
  @moduledoc """
  SSD1306 Driver for Elixir using ElixirALE.

  ## Usage:
  Add your devices to your config like so:

      config :ssd1306,
        devices: [
          %{bus: "i2c-1", address: 0x3d, reset_pin: 17}
        ]

  Then use the functions in [SSD1306.Device] to send image data.
  Pretty simple.
  """

  @doc """
  Connect to an SSD1306 device.
  """
  def connect(config),
    do: Supervisor.start_child(SSD1306.Supervisor, {SSD1306.Device, config})

  @doc """
  Disconnect an SSD1306 device.
  """
  def disconnect(device_name) do
    case Supervisor.terminate_child(SSD1306.Supervisor, {SSD1306.Device, device_name}) do
      :ok -> Supervisor.delete_child(SSD1306.Supervisor, {SSD1306.Device, device_name})
      {:error, reason} -> {:error, reason}
    end
  end
end