defmodule RustlerBtleplug.Client do require Logger def init(opts \\ %{}) do case RustlerBtleplug.Native.init(opts) do {:ok, result} -> Logger.info("Rustler init #{inspect(result)}") {:error, err} -> {:error, err} # res -> {:ok, NifIo.FileHandle.wrap_resource(res)} number -> {:ok, number} end end def add(a, b) do case RustlerBtleplug.Native.add(a, b) do {:ok, result} -> Logger.info("Rustler add #{inspect(result)}") {:error, err} -> {:error, err} # res -> {:ok, NifIo.FileHandle.wrap_resource(res)} number -> {:ok, number} end end def get_map() do case RustlerBtleplug.Native.get_map() do {:ok, result} -> Logger.info("Rustler add #{inspect(result)}") {:error, err} -> {:error, err} # res -> {:ok, NifIo.FileHandle.wrap_resource(res)} number -> {:ok, number} end end def new_ble_resource() do case RustlerBtleplug.Client.new_ble_resource() do {:ok, btle_manager} -> {:ok, btle_manager} {:error, reason} -> {:error, reason} end end def scan(btle_manager) do case RustlerBtleplug.Client.scan(btle_manager) do {:ok, btle_manager} -> {:ok, btle_manager} {:error, reason} -> {:error, reason} end end def connect(btle_manager, device_id) do case RustlerBtleplug.Client.connect(btle_manager, device_id) do {:ok, _} -> {:ok, :device_connected} {:error, reason} -> {:error, reason} end end def disconnect(btle_manager, device_id) do case RustlerBtleplug.Client.disconnect(btle_manager, device_id) do {:ok, _} -> {:ok, :device_disconnected} {:error, reason} -> {:error, reason} end end def child_spec(opts) do %{ id: __MODULE__, start: {__MODULE__, :start_link, [opts]}, type: :worker, restart: :permanent, shutdown: 500 } end end