lib/qmi/control.ex

defmodule QMI.Control do
  @moduledoc """
  Provides commands related to QMUX link and client management
  """
  alias QMI.Codec

  @doc """
  Get a client id for a service
  """
  @spec get_client_id(QMI.name(), non_neg_integer()) ::
          {:ok, non_neg_integer()} | {:error, atom()}
  def get_client_id(qmi, service_id) do
    Codec.Control.get_client_id(service_id)
    |> QMI.call(qmi)
  end

  @doc """
  Release a client id for a service
  """
  @spec release_client_id(QMI.name(), non_neg_integer(), non_neg_integer()) ::
          :ok | {:error, atom()}
  def release_client_id(qmi, service_id, client_id) do
    Codec.Control.release_client_id(service_id, client_id)
    |> QMI.call(qmi)
  end
end