#!/bin/sh
# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# This helper script is sourced by init and postinstall scripts.
#

#
# cr50_get_name
#
# Find out which if the two available Cr50 images should be used. The only
# required command line parameter is the string, a command used to communicate
# with Cr50 (different invocations are used in case of init and postinstall).
#
# The output is the file name of the Cr50 image to use printed to stdout.
#
cr50_get_name() {
  local board_flags
  local board_id
  local cr50_image_base_name="/opt/google/cr50/firmware/cr50.bin"
  local ext="prod"  # Prod is a safer default option.
  local logger_tag="cr50_get_name"
  local updater="$1"

  logger -t "${logger_tag}" "updater is ${updater}"

  # Determine the type of the Cr50 image to use based on the H1's board ID
  # flags. The hexadecimal value of flags is reported by 'gsctool -i' in the
  # last element of a colon separated string of values.
  #
  # Depending on the interface used, gsctool -i output could be a muli line
  # text, make sure to pay attention to the relevant line only, which is
  # guaranteed to be the last and contains text formatted as follows:
  #
  # Board ID space: 5a5a4146:a5a5beb9:00007f80
  #
  exit_status=0
  output=$(${updater} -i 2>&1) || exit_status="$?"
  board_id="$(echo "${output}" | awk '/Board ID/ {gsub(/.*: /,""); print}')"
  board_flags="0x$(echo "${board_id}" | sed 's/.*://')"

  if [ "${exit_status}" != "0" ]; then
    logit "exit status: ${exit_status}"
    logit "output: ${output}"
  elif [ -z "${board_flags}" ]; then
    # Any error in detecting board flags will force using the prod image,
    # which the safe option.
    logger -t "${logger_tag}" "error detecting board ID flags"
  elif [ "${board_id}" = "ffffffff:ffffffff:ffffffff" ]; then
    logger -t "${logger_tag}" "board ID is erased using ${ext} image"
  else
    local pre_pvt

    # Flag bit 0x10 is the indication that this is a pre-pvt device.
    pre_pvt=$(( board_flags & 0x10 ))

    if [ "${pre_pvt}" = "16" ]; then
      ext="prepvt"
    fi
  fi

  logger -t "${logger_tag}" \
    "board_id: '${board_id}' board_flags: '${board_flags}', extension: '${ext}'"

  printf "${cr50_image_base_name}.${ext}"
}
