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