anchor.diff:      gen_server:start_link({local, ?MODULE}, ?MODULE, DriverMod, []).
   
   %% @equiv configure(Pin, Type, [default])
  +-spec configure(pin(), pin_type()) -> any().
   configure(Pin, Type) -> configure(Pin, Type, [default]).
   
   %% @doc Configure pin type.
  -%%
  -%% @spec configure(Pin::pin(), Type::pin_type(), Attr) -> any()
  -%%      Attr = [default]
  +-spec configure(pin(), pin_type(), [default]) -> any().
   configure(Pin, Type, Attr) ->
       Command = <<(index(Pin)):8, 1:8, (map_type(Type)):8, (map_attr(Attr)):8>>,
       gen_server:call(?MODULE, {command, Command}).
   
   %% @doc Configure slot.
   %%
  -%% @spec configure_slot(Slot::slot(), Config::Config) -> ok
  -%%      Config = GPIO_Config | SPI_Config
  -%%      GPIO_Config = {pin_type(), pin_type(), pin_type(), pin_type()}
  -%%      SPI_Config = disable_cs | enable_cs
  +%% The GPIO slots can be configured with `{T1, T2, T3, T4}'
  +%% and the SPI slots allow the configuration `disable_cs | enable_cs'.
  +-spec configure_slot(Slot::slot(),
  +                     Config::{T1::pin_type(), T2::pin_type(), T3::pin_type(), T4::pin_type()}
  +                        | disable_cs | enable_cs) -> ok.
   configure_slot(gpio1, {T1, T2, T3, T4}) ->
       configure(gpio1_1, T1),
       configure(gpio1_2, T2),
  
positive.code: %% 1> grisp_gpio:clear(led1_r).
  %% <<>>
  %% '''
  clear(Pin) -> gen_server:call(?MODULE, {command, <<(index(Pin)):8, 3:8>>}).
  
  %% @doc Sets the given pin to true
  %%
  %% === Example ===
  %% Turn on the red led of `led_1' with:
  
negative.code: configure_slot(spi2, disable_cs) -> configure(ss2, output_1);
  configure_slot(spi2, enable_cs)  -> configure(ss2, periph_c).
  
  %% @doc Gets the value of a pin.
  %%
  %% === Example ===
  %% To see whether the red led of `led_1' is on use:
  