anchor.diff: +%% -----------------------------------------------------------------------------
  +%% @doc Driver API for the
  +%% <a href="https://datasheets.maximintegrated.com/en/ds/DS2482-100.pdf">
  +%% DS2482-100 Single-Channel 1-Wire Master
  +%% </a>.
  +%% @end
  +%% -----------------------------------------------------------------------------
   -module(grisp_onewire).
  -% Chip: DS2482-100 Single-Channel 1-Wire Master
  -% https://datasheets.maximintegrated.com/en/ds/DS2482-100.pdf
   
   -behaviour(gen_server).
   
  
positive.code:                                              {read, 1, ?I2C_M_NO_RD_ACK}]),
      {D, T, S}.
  
  search() ->
      assert_transaction(),
      search(0, []).
  
negative.code:         Any -> error({invalid_status, Any})
      end.
  
  %% @doc Write configuration into device register.
  %%
  %% Command code: d2h.
  %%
  %% The default configuration is 0, i.e., all 3 configurable bits set to 0.
  %%
  %% === Atom to Integer to Configuration Bit Mapping ===
  %% <table border="1" summary="Atom to Integer to Configuration Bit Mapping">
  %%  <tr><th>Atom</th><th>Integer</th><th>Configuration Bit</th></tr>
  %%  <tr><td>`apu'</td><td>1</td><td>Bit 0 APU</td></tr>
  %%  <tr><td>`spu'</td><td>4</td><td>Bit 2 SPU</td></tr>
  %%  <tr><td>`overdrive'</td><td>8</td><td>Bit 3 1WS</td></tr>
  %% </table>
  %%
  %% This function can only be used inside of a {@link transaction/1} call.
  %% @end
  % Spec: | S | AD,0 ‖ A ‖ WCFG ‖ A ‖ <byte> ‖ A ‖ Sr | AD,1 ‖ A | <byte> ‖ A\ | P |
  -spec write_config([apu | overdrive | spu] | integer()) -> ok.
  write_config(Conf) when is_list(Conf) ->
      write_config(lists:foldl(fun(X, A) -> A bor map_config(X) end, 0, Conf));
  write_config(Conf) when is_integer(Conf) ->
  