#!/bin/bash

# Provide source directive to shellcheck.
# shellcheck source=meta-facebook/recipes-phosphor/state/phosphor-state-manager/greatlakes/power-cmd
source /usr/libexec/phosphor-state-manager/power-cmd

HOST_ID=$1
SLOT_ID=$(( $1-1  << 2 ))

# Host Power Off
host-power-off()
{
        for pwr_cmd in "${power_seq[@]}"
        do
             result="$(busctl call "$SERVICE" "$OBJECT_PATH" "$INTERFACE" sendRequest yyyyay "$SLOT_ID" "$NETFN" "$LUN" "$CMD" "$DATA_LEN" 0x01 0x42 0x01 0x00 "$pwr_cmd")"
             echo "$result"
             if [ "$pwr_cmd" == "$POWER_BTN_LOW" ]
             then
                     sleep 6
             fi
        done

        # Check host stattus after doing host power off
        host_status=$(host-power-status $SLOT_ID)
        if [ "$host_status" == "$STATE_OFF" ]
        then
             busctl set-property "$HOST_BUS_NAME""$HOST_ID" "$HOST_OBJ_PATH""$HOST_ID" "$HOST_INTF_NAME" "$HOST_PROPERTY_NAME" s "$HOST_OFF"
             echo "Host power off"
             exit 0;
        else
             busctl set-property "$HOST_BUS_NAME""$HOST_ID" "$HOST_OBJ_PATH""$HOST_ID" "$HOST_INTF_NAME" "$HOST_PROPERTY_NAME" s "$HOST_ON"
             echo "Host power on"
             exit 0;
        fi
}

# Check Host Response and Status
host_status=$(host-power-status $SLOT_ID)
if [ "$host_status" == "$STATE_ON" ]
then
       host-power-off
else
       echo "Power is already off"
       exit 1;
fi
