anchor.diff:                      {write, <<?CMD_SRP, 16#e1>>},
                       {read, 1, ?I2C_M_NO_RD_ACK}]).
   
  +%% @private
  +%%
  +%% Command:78h
  +%%
  +%% This function can only be used inside of a {@link transaction/1} call.
  +-spec write_triplet(0 | 1) -> {0 | 1,0 | 1,0 | 1}.
   write_triplet(Dir) ->
       assert_transaction(),
       Db = case Dir of 1 -> 16#ff; 0 -> 0 end,
  
positive.code:             erlang:raise(Class, Reason, Stacktrace)
      end.
  
  %% Spec: | S | AD,0 ‖ A ‖ DRST ‖ A ‖ Sr | AD,1 ‖ A | <byte> ‖ A\ | P |
  reset() ->
      assert_transaction(),
      <<Status:8>> = grisp_i2c:msgs([?DS2482_I2C_ADR,
  
negative.code: % @private
  start_link() -> gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
  
  %% @doc Run a 1-Wire transaction.
  %%
  %% Use this function to make sure that there is only one process running on the
  %% 1-Wire.
  %%
  %% === Example ===
  %% ```
  %%  2> grisp_onewire:transaction(fun grisp_onewire:bus_reset/0).
  %%  presence_detected
  %% '''
  -spec transaction(fun()) -> any().
  transaction(Fun) when is_function(Fun) ->
      case gen_server:call(?MODULE, {transaction, Fun}, ?TRANSACTION_TIMEOUT) of
          {result, Result} ->
  