blob: a075bbb3b00699e0d3eb6c0601a9254a7fb1349a [file] [log] [blame]
Michael Bestasd137feb2023-12-01 02:26:28 +02001#!/bin/bash
2
3# SPDX-FileCopyrightText: 2022-2023 The Calyx Institute
4#
5# SPDX-License-Identifier: Apache-2.0
6
7#
8# prepare-firmware:
9#
10# Pixel firmware preparation hook for extract-utils
11#
12#
13##############################################################################
14
15
16### SET ###
17
18# use bash strict mode
19set -euo pipefail
20
21
22### TRAPS ###
23
24# trap signals for clean exit
25trap 'exit $?' EXIT
26trap 'error_m interrupted!' SIGINT
27
28### CONSTANTS ###
29readonly script_path="$(cd "$(dirname "$0")";pwd -P)"
Jis G Jacob4c84cfa2024-02-09 11:20:03 -050030readonly vars_path="${script_path}/../../../vendor/bliss/vars"
Michael Bestasd137feb2023-12-01 02:26:28 +020031readonly top="${script_path}/../../.."
32
Jis G Jacob4c84cfa2024-02-09 11:20:03 -050033readonly fbpacktool="${top}/bliss/scripts/fbpacktool/fbpacktool.py"
Michael Bestasd137feb2023-12-01 02:26:28 +020034readonly qc_image_unpacker="${top}/prebuilts/extract-tools/linux-x86/bin/qc_image_unpacker"
35
36readonly device="${1}"
37source "${vars_path}/${device}"
38
39readonly _fbpk_version="${fbpk_version:-v1}"
40readonly _wifi_only="${wifi_only:-false}"
41
42readonly src_dir="${2}"
43
44## HELP MESSAGE (USAGE INFO)
45# TODO
46
47### FUNCTIONS ###
48
49# Unpack the seperate partitions needed for OTA
50# from the factory image's bootloader.img & radio.img
51unpack_firmware() {
52 if [[ "${_wifi_only}" != "true" ]]; then
53 "${qc_image_unpacker}" -i "${src_dir}"/radio-*.img -o "${src_dir}"
54 # Alternative: dd bs=4 skip=35
55 fi
56
57 if [[ "$_fbpk_version" == "v1" ]]; then
58 "${qc_image_unpacker}" -i "${src_dir}"/bootloader-*.img -o "${src_dir}"
59 else
60 python3 "${fbpacktool}" unpack -o "${src_dir}" "${src_dir}"/bootloader-*.img
61 fi
62}
63
64# error message
65# ARG1: error message for STDERR
66# ARG2: error status
67error_m() {
68 echo "ERROR: ${1:-'failed.'}" 1>&2
69 return "${2:-1}"
70}
71
72# print help message.
73help_message() {
74 echo "${help_message:-'No help available.'}"
75}
76
77main() {
78 unpack_firmware
79}
80
81### RUN PROGRAM ###
82
83main "${@}"
84
85
86##