Nanodrop.USB behaviour (nanodrop v0.3.1)

Copy Markdown

Behaviour for USB operations.

This module defines callbacks for USB communication and provides a default implementation using the usb library. In tests, this can be replaced with a mock using Mox.

Summary

Types

device()

@type device() :: reference()

device_descriptor()

@type device_descriptor() :: %{
  vendor_id: non_neg_integer(),
  product_id: non_neg_integer()
}

device_handle()

@type device_handle() :: reference()

Callbacks

claim_interface(device_handle, non_neg_integer)

@callback claim_interface(device_handle(), non_neg_integer()) :: :ok | {:error, term()}

close_device(device_handle)

@callback close_device(device_handle()) :: :ok | {:error, term()}

get_bus_number(device)

@callback get_bus_number(device()) :: {:ok, non_neg_integer()} | {:error, term()}

get_device_address(device)

@callback get_device_address(device()) :: {:ok, non_neg_integer()} | {:error, term()}

get_device_descriptor(device)

@callback get_device_descriptor(device()) :: {:ok, device_descriptor()} | {:error, term()}

get_device_list()

@callback get_device_list() :: {:ok, [device()]} | {:error, term()}

open_device(device)

@callback open_device(device()) :: {:ok, device_handle()} | {:error, term()}

read_bulk(device_handle, byte, non_neg_integer, timeout)

@callback read_bulk(device_handle(), byte(), non_neg_integer(), timeout()) ::
  {:ok, binary()} | {:error, term()}

write_bulk(device_handle, byte, binary, timeout)

@callback write_bulk(device_handle(), byte(), binary(), timeout()) ::
  {:ok, non_neg_integer()} | {:error, term()}