#!/bin/bash cmd="laymanshex" accTable="LogDataAccessTbl.bin" storage="LogDataStorage.bin" # uses evil eval function printNonEmpty { varname='$'"$1" eval "val=$varname" if [ "$val" != "" ]; then echo "$1=$val" fi } function printSplit { outputSplit="$($cmd -nopadding -fvar=offset=$1,splitNo=$2 $storage-Workout$3.layhex $storage 2> /dev/null)" status=$? if [ $status -eq 0 ]; then eval "$outputSplit" echo echo "Split $(($2+1))" echo "----------" printNonEmpty "SplitDuration" printNonEmpty "SplitDistance" printNonEmpty "SplitHeartRate" printNonEmpty "SplitSPM" fi } function printWorkout { echo "Workout $1" echo "=============" outputHeader="$($cmd -nopadding -fvar=offset=$2,splitNo=0 $storage-Workout$3.layhex $storage 2> /dev/null)" status=$? if [ $status -eq 0 ]; then eval "$outputHeader" printNonEmpty "TotalDuration" printNonEmpty "TotalDistance" printNonEmpty "SplitSize" printNonEmpty "SPM" j=0 while [ "$j" -lt "$NoSplits" ]; do printSplit $2 $j $3 j=$((j+1)) done echo fi } function printAll { i=0 while : ; do offset=$(($i)) output="$($cmd -nopadding -fvar=offset=$offset $accTable.layhex $accTable 2>/dev/null)" status=$? if [ $status -ne 0 ]; then break else eval "$output" printWorkout $Index $Offset $WorkoutType fi i=$((i+1)) done } printAll