# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
#
# @ECLASS: cbi-image.eclass
# @MAINTAINER:
# Chromium OS Firmware Team
# @BUGREPORTS:
# Please report bugs via http://crbug.com/new (with label Build)
# @VCSURL: https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/HEAD/eclass/@ECLASS@
# @BLURB: helper eclass for building Cros Board Info (CBI) images
# @DESCRIPTION:
# CBI is the Chrome OS standard data format for storing board version, OEM,
# SKU, etc. This library provides helper functions for each board to create
# custom CBI images.

# Check for EAPI 5+
case "${EAPI:-0}" in
5|6) ;;
*) die "unsupported EAPI (${EAPI}) in eclass (${ECLASS})" ;;
esac

# @ECLASS-VARIABLE: CROS_CBI_IMAGE_DIR
# @DESCRIPTION: The directory where output images are stored.
CROS_CBI_IMAGE_DIR="/firmware/cbi"

# @ECLASS-VARIABLE: EEPROM_SIZE
# @DESCRIPTION: The size of the output image files in bytes.
EEPROM_SIZE=256

# @FUNCTION: make_cbi
# @USAGE: <Prefix for output files> <oem id> <sku id>
# @DESCRIPTION: Build one CBI image
make_cbi() {
	[[ $# -ne 3 ]] && die "Usage: ${FUNCNAME} <prefix> <oem id> <sku id>"
	local prefix="$1"
	local oemid="$2"
	local skuid="$3"

	cbi-util create --file "${prefix}_${skuid%%:*}.bin" \
		--size "${EEPROM_SIZE}" --board_version "${BOARD_VERSION}" \
		--oem_id "${oemid}" --sku_id "${skuid}" \
		|| die "Failed to create CBI image"
}

# @FUNCTION: make_all_cbi
# @USAGE: <oem name> <oem id>
# @DESCRIPTION:
# Build CBI images for all SKU IDs listed in SKU_IDS_<oem name> array, which
# is supposed to be provided by the caller.
make_all_cbi() {
	[[ $# -ne 2 ]] && die "Usage: ${FUNCNAME} <oem name> <oem id>"
	local oem_name="$1"
	local skuids="SKU_IDS_${oem_name}[@]"
	local oemid="$2"
	local i

	for i in "${!skuids}"; do
		make_cbi "cbi_${oem_name}" "${oemid}" "${i}"
	done
}

# @FUNCTION: cbi-image_install
# @USAGE:
# @DESCRIPTION: Install the CBI image files to $CROS_CBI_IMAGE_DIR
cbi-image_install() {
	[[ $# -ne 0 ]] && die "Usage: ${FUNCNAME}"
	insinto "${CROS_CBI_IMAGE_DIR}"
	doins cbi_*.bin
}