ATECC508A.Transport.transaction
You're seeing just the function
transaction
, go back to ATECC508A.Transport module for more information.
Specs
transaction(t(), ((... -> any()) -> {:ok, any()} | {:error, atom()})) :: {:ok, any()} | {:error, atom()}
Run a callback function inside a transaction that doesn't sleep
Use a transaction when multiple requests need to be sent without putting the chip to sleep. For example, when a value needs to be stored in SRAM and then acted on, since sleeping will clear the SRAM.
callback
is a function that provides one argument, request
, and expects a
return value of {:ok, data}
or {:error, reason}
. request
is an anonymous
function whose args follow the public function ATECC508A.Transport.request/4
,
except without the first arg (t()
) since this is provided to transaction
.
The success/error tuple returned by the callback function is returned
by transaction
.
Example
{:ok, transport} = ATECC508A.Transport.I2C.init()
{:ok, signature} =
ATECC508A.Transport.transaction(transport, fn request ->
# NONCE command (0x16)
{:ok, <<0>>} = request.(<<0x16, 0x43, 0, 0, signature_digest::binary>>, 29, 1)
# SIGN command (0x41)
request.(<<0x41, 0xA0, 0, 0>>, 115, 64)
end)