LcamDev: Add baked in camera profiles; use new test supports
This commit is contained in:
Executable
+79
@@ -0,0 +1,79 @@
|
||||
#!/usr/bin/env bash
|
||||
# Extract libcamera enumeration output as C++ BakedCameraProfile initializer rows.
|
||||
#
|
||||
# Usage:
|
||||
# scripts/extractBakedCameraProfiles.sh <build-dir> <machine-tag>
|
||||
#
|
||||
# Example:
|
||||
# scripts/extractBakedCameraProfiles.sh build-agent dell-laptop
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
if [[ $# -lt 2 ]]; then
|
||||
echo "Usage: $0 <build-dir> <machine-tag>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BUILD_DIR="$1"
|
||||
MACHINE_TAG="$2"
|
||||
LIST_CAMERAS="${BUILD_DIR}/commonLibs/lcameraDev/lcameraDev_list_cameras"
|
||||
|
||||
if [[ ! -x "${LIST_CAMERAS}" ]]; then
|
||||
echo "Missing executable: ${LIST_CAMERAS}" >&2
|
||||
echo "Build with -DENABLE_LIB_lcameraDev=ON -DENABLE_TESTS=ON" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "// MACHINE: ${MACHINE_TAG}"
|
||||
echo "// Paste rows into tests/fixtures/bakedCameraProfiles.h"
|
||||
echo
|
||||
|
||||
"${LIST_CAMERAS}" 2>/dev/null | awk -v machine="${MACHINE_TAG}" '
|
||||
/^lcameraDev: found / { next }
|
||||
/^\s+\[[0-9]+\] id=/ {
|
||||
line = $0
|
||||
sub(/^\s+\[[0-9]+\] /, "", line)
|
||||
|
||||
id = ""
|
||||
model = ""
|
||||
location = ""
|
||||
|
||||
n = split(line, parts, " ")
|
||||
for (i = 1; i <= n; i++) {
|
||||
if (parts[i] ~ /^id=/) {
|
||||
id = substr(parts[i], 4)
|
||||
} else if (parts[i] ~ /^model=/) {
|
||||
model = substr(parts[i], 7)
|
||||
} else if (parts[i] ~ /^location=/) {
|
||||
location = substr(parts[i], 10)
|
||||
}
|
||||
}
|
||||
|
||||
profile_tag = "camera_index_" index
|
||||
if (location == "external") {
|
||||
profile_tag = "usb_camera"
|
||||
} else if (location == "front" || location == "back") {
|
||||
profile_tag = "integrated_webcam"
|
||||
}
|
||||
|
||||
selector = "index:" index
|
||||
if (model != "") {
|
||||
selector = "model-substr:" substr(model, 1, 12)
|
||||
if (location != "") {
|
||||
selector = selector ";location:" location
|
||||
}
|
||||
}
|
||||
|
||||
printf "{\n"
|
||||
printf "\t\"%s\",\n", machine
|
||||
printf "\t\"%s\",\n", profile_tag
|
||||
printf "\t\"%s\",\n", id
|
||||
printf "\t\"%s\",\n", model
|
||||
printf "\t\"%s\",\n", location
|
||||
printf "\t\"\",\n"
|
||||
printf "\t\"\",\n"
|
||||
printf "\t\"%s\",\n", selector
|
||||
printf "\ttrue,\n"
|
||||
printf "},\n"
|
||||
}
|
||||
' index=0
|
||||
Reference in New Issue
Block a user