#!/bin/bash
# Copyright 2021 Google LLC
# Copyright 2021 Quanta Computer Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


target_pwm="$1"

if [ -z "$target_pwm" ]; then
  echo "Target_pwm is not set" >&2
  exit 1
fi

zone_num="$(busctl tree xyz.openbmc_project.State.FanCtrl | grep -c zone)"
result=0

for (( i = 0; i < zone_num; i++ )); do
  retries=4
  busctl_error=-1

  while (( retries > 0 )) && (( busctl_error != 0 )); do
    busctl set-property xyz.openbmc_project.State.FanCtrl /xyz/openbmc_project/settings/fanctrl/zone${i} xyz.openbmc_project.Control.FanSpeed Target t "${target_pwm}"
    busctl_error=$?

    if (( busctl_error != 0 )); then
      #Retry setting failsafe. Swampd may be running but zone aren't yet built
      #so sleep a second to let them be built
      sleep 1
    fi

    (( retries-=1 )) || true
  done

  if (( busctl_error != 0 )); then
    echo "Failure setting zone${i} fan failsafe to ${target_pwm}" >&2
    result=$busctl_error
  else
    echo "Setting zone${i} fan failsafe to ${target_pwm}"
  fi
done

exit $result
