View Source UBootEnv.IO (uboot_env v1.0.1)

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

@type generation() :: byte() | :unused

Link to this section Functions

Link to this function

package(bin, env_size, generation)

View Source
@spec 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.

@spec 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.

@spec 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.

@spec 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.