# Copyright 2020 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2

# @ECLASS: cros-ec-utils.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/+/master/eclass/@ECLASS@
# @BLURB: helper eclass for building Chromium OS firmware
# @DESCRIPTION:
# Common helper functions for working with Chromium OS EC firmware.
#
# NOTE: When making changes to this class, make sure to modify all the -9999
# ebuilds that inherit it (e.g., chromeos-fpmcu-release*) to work around
# http://crbug.com/220902.

if [[ -z "${_ECLASS_CROS_EC_UTILS}" ]]; then
_ECLASS_CROS_EC_UTILS="1"

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

# @FUNCTION: get_firmware_version
# @USAGE: <firmware path> <firmware ID field>
# @INTERNAL
# @DESCRIPTION:
# Read the firmware version from the provided file.
get_firmware_version() {
	debug-print-function "${FUNCNAME[0]}" "$@"

	local file="${1}"
	local fw_id_field="${2}"
	local version_string
	local -a fmap_fwid

	IFS=" " read -r -a fmap_fwid <<<"$(dump_fmap -p "${file}" "${fw_id_field}" \
		|| die)"
	# Values in array after running above command:
	#   fmap_fwid[0]="${fw_id_field}"
	#   fmap_fwid[1]=offset
	#   fmap_fwid[2]=size
	version_string="$(dd bs=1 skip="${fmap_fwid[1]}" \
		count="${fmap_fwid[2]}" if="${file}" status=none || die)"
	echo "${version_string}"
}

# @FUNCTION: get_firmware_rw_version
# @USAGE: <RW firmware path>
# @DESCRIPTION:
# Read the read-write (RW) firmware version from the provided file.
cros-ec-utils-get_firmware_rw_version() {
	debug-print-function "${FUNCNAME[0]}" "$@"

	local file="${1}"
	get_firmware_version "${file}" "RW_FWID"
}

# @FUNCTION: get_firmware_ro_version
# @USAGE: <RO firmware path>
# @DESCRIPTION:
# Read the read-only (RO) firmware version from the provided file.
cros-ec-utils-get_firmware_ro_version() {
	debug-print-function "${FUNCNAME[0]}" "$@"

	local file="${1}"
	get_firmware_version "${file}" "RO_FRID"
}

fi  # _ECLASS_CROS_EC_UTILS
