#!/bin/bash
# Fake ipmitool for the tests: "raw 0x06 0x52 BUS ADDR 0x02 CMD" -> PMBus word.
# Recorded on a Supermicro AS-2015CS-TNR (PSUs at 0x78/0x7a). Overrides via env:
#   STATUS_7A="lo hi"  status word of the 2nd PSU     PIN_7A="lo hi"  its READ_PIN
#   NOFAN_7A=1         2nd PSU has no fan reading     HANG=1          never answer
addr=$5; cmd=$7
[ -n "$HANG" ] && exec sleep 30
nak() { echo "Unable to send RAW command (channel=0x0 netfn=0x6 lun=0x0 cmd=0x52 rsp=0x83): Unknown (0x83)" >&2; exit 1; }
case "$addr" in 0x78|0x7a) ;; *) nak ;; esac
case "$addr:$cmd" in
    0x78:0x97) echo " 5a fa" ;;                     # 301 W
    0x7a:0x97) echo " ${PIN_7A:-a6 fa}" ;;          # 339 W
    0x78:0x79) echo " 02 00" ;;                     # CML only (ignored)
    0x7a:0x79) echo " ${STATUS_7A:-02 00}" ;;
    *:0x88)    echo " d1 f9" ;;                     # 232.5 V
    *:0x8d)    echo " 22 00" ;;                     # 34 C
    0x7a:0x90) [ -n "$NOFAN_7A" ] && nak; echo " 3c 1a" ;;   # 4576 rpm
    *:0x90)    echo " 40 1a" ;;                     # 4608 rpm
    *) nak ;;
esac
