UBootEnv.IO (uboot_env v1.0.0) View Source

Functions for reading and writing raw blocks to storage

This is the module that handles the low level CRC32 and redundant block details.

Link to this section Summary

Functions

Package up U-Boot environment contents

Read a U-Boot environment block

Unpackage a U-Boot environment block

Write a U-Boot environment block

Link to this section Types

Specs

generation() :: byte() | :unused

Link to this section Functions

Link to this function

package(bin, env_size, generation)

View Source

Specs

package(binary(), pos_integer(), generation()) ::
  {:ok, iodata()} | {:error, :environment_too_small}

Package up U-Boot environment contents

The result can be written to where ever the environment block is persisted.

Specs

read(UBootEnv.Config.t()) :: {:ok, binary()} | {:error, any()}

Read a U-Boot environment block

This function performs the actual read and in the case of redundant U-Boot environments, it returns the newer block. It does not decode.

Specs

unpackage(binary(), :redundant | :nonredundant) ::
  {:ok, binary(), generation()} | {:error, :invalid_crc}

Unpackage a U-Boot environment block

This is the opposite of package/3. It will only return successfully if the input passes the U-Boot CRC check.

Specs

write(UBootEnv.Config.t(), iodata()) :: :ok | {:error, atom()}

Write a U-Boot environment block

This function performs the actual write. In the case of redundant U-Boot environments, it writes the block in the right location and marks the generation byte appropriately so that it is used on the next read. It does not encode.