#!/bin/bash
# gen_metrics_names.sh: create metrics name arrays suitable for ROM placement


# Configuration:

PACK_CNT=1
PACK_METRICS="\
  volt.min volt.max volt.watches volt.alerts volt.stddev.max \
  temp.min temp.max temp.watches temp.alerts temp.stddev.max \
  c.volt.min c.volt.max c.volt.avg c.volt.stddev \
  m.temp.min m.temp.max m.temp.avg m.temp.stddev"

CMOD_CNT=8
CMOD_METRICS="temp.act temp.min temp.max temp.maxdev"

CELL_CNT=16
CELL_METRICS="volt.act volt.min volt.max volt.maxdev"

SPEED_CNT=3
declare -a SPEED_NAMES=("cst" "acc" "dec")
SPEED_METRICS="dist used recd spdavg"

LEVEL_CNT=2
declare -a LEVEL_NAMES=("lup" "ldn")
LEVEL_METRICS="dist used recd hsum"


# Generate battery metrics:

echo
echo '// BEGIN Battery metrics names'
echo '// DO NOT EDIT -- generated by gen_metrics_names.sh'

for f in $PACK_METRICS ; do
  fu=${f//\./_}
  printf 'const char* const x_rt_b_pack_%s[] = { ' "$fu"
  sep=""
  for ((i = 0; i < $PACK_CNT; i++)) ; do
    ih=$((i + 1))
    printf '%s"xrt.b.p.%d.%s"' "$sep" "$ih" "$f"
    sep=", "
  done
  echo ' };'
done

for f in $CMOD_METRICS ; do
  fu=${f//\./_}
  printf 'const char* const x_rt_b_cmod_%s[] = { ' "$fu"
  sep=""
  for ((i = 0; i < $CMOD_CNT; i++)) ; do
    ih=$((i + 1))
    printf '%s"xrt.b.m.%02d.%s"' "$sep" "$ih" "$f"
    sep=", "
  done
  echo ' };'
done

for f in $CELL_METRICS ; do
  fu=${f//\./_}
  printf 'const char* const x_rt_b_cell_%s[] = { ' "$fu"
  sep=""
  for ((i = 0; i < $CELL_CNT; i++)) ; do
    ih=$((i + 1))
    printf '%s"xrt.b.c.%02d.%s"' "$sep" "$ih" "$f"
    sep=", "
  done
  echo ' };'
done

echo '// END Battery metrics names'
echo


# Generate power metrics:

echo
echo '// BEGIN Power metrics names'
echo '// DO NOT EDIT -- generated by gen_metrics_names.sh'

for f in $SPEED_METRICS ; do
  fu=${f//\./_}
  printf 'const char* const x_rt_p_stats_speed_%s[] = { ' "$fu"
  sep=""
  for ((i = 0; i < $SPEED_CNT; i++)) ; do
    ih=$((i + 1))
    printf '%s"xrt.p.stats.%s.%s"' "$sep" "${SPEED_NAMES[$i]}" "$f"
    sep=", "
  done
  echo ' };'
done

for f in $LEVEL_METRICS ; do
  fu=${f//\./_}
  printf 'const char* const x_rt_p_stats_level_%s[] = { ' "$fu"
  sep=""
  for ((i = 0; i < $LEVEL_CNT; i++)) ; do
    ih=$((i + 1))
    printf '%s"xrt.p.stats.%s.%s"' "$sep" "${LEVEL_NAMES[$i]}" "$f"
    sep=", "
  done
  echo ' };'
done

echo '// END Power metrics names'
echo
