Files
wasm-simulator/generate-linuxcnc-puma560-dh-parameters.sh

59 lines
1.6 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")"
# LinuxCNC source basis: Puma560 DH parameter output is generated from
# configs/sim/axis/vismach/puma/puma560_dh.hal setp genserkins.{A,ALPHA,D}-N
# values used by LinuxCNC genser/switchkins simulation configs.
linuxcnc_root=${LINUXCNC_ROOT:-../linuxcnc}
source_path=${1:-configs/sim/axis/vismach/puma/puma560_dh.hal}
source_file="$linuxcnc_root/$source_path"
if [[ ! -f "$source_file" ]]; then
echo "missing LinuxCNC puma560 DH HAL source: $source_file" >&2
exit 1
fi
awk -v source_path="$source_path" '
function fail(message) {
print message > "/dev/stderr"
exit 1
}
$1 == "setp" && $2 ~ /^genserkins\.(A|ALPHA|D)-[0-5]$/ {
split($2, qualified, ".")
split(qualified[2], name_index, "-")
name = name_index[1]
index = name_index[2] + 0
values[name, index] = $3
}
END {
names[0] = "A"
arrays["A"] = "a"
names[1] = "ALPHA"
arrays["ALPHA"] = "alpha"
names[2] = "D"
arrays["D"] = "d"
print "// Generated by ./generate-linuxcnc-puma560-dh-parameters.sh."
print "// Source: linuxcnc/" source_path " setp genserkins.{A,ALPHA,D}-N values."
for (n = 0; n < 3; n++) {
name = names[n]
array = arrays[name]
for (i = 0; i < 6; i++) {
key = name SUBSEP i
if (!(key in values)) {
fail("missing " name "-" i " in " source_path)
}
print " parameters." array "[" i "] = " values[key] ";"
}
if (n < 2) {
print ""
}
}
}
' "$source_file"