| #!/bin/bash |
| |
| MARGIN_TABLE_FILE_IN="/usr/share/read-margin-temp/config-margin.json.in" |
| TEMP_FILE="$(mktemp)" |
| cp "$MARGIN_TABLE_FILE_IN" "$TEMP_FILE" |
| |
| target_num="$(cat $TEMP_FILE | grep '"target"' | wc -l)" |
| |
| # wait target dbus |
| for ((i = 0; i < ${target_num}; i++)); do |
| line_num=$((i+1)) |
| path="$(cat $TEMP_FILE | grep '"target"' | head -n ${line_num} | tail -n +${line_num} | cut -d '"' -f 4)" |
| mapper wait $path |
| done |
| |
| nvmePath="/xyz/openbmc_project/sensors/temperature/nvme" |
| nvmeInventoryPath="/xyz/openbmc_project/inventory/system/chassis/motherboard/nvme" |
| nvmeList="" |
| # Get and Set WCTEMP |
| for ((i = 0; i < 16; i++)); do |
| name="@WCTemp$(printf "%02d" $i)@" |
| wcTemp=72000 |
| presentState="$(busctl get-property \ |
| xyz.openbmc_project.Inventory.Manager \ |
| ${nvmeInventoryPath}${i} \ |
| xyz.openbmc_project.Inventory.Item \ |
| Present | awk '{print $2}')" |
| |
| if [[ "$presentState" == "true" ]]; then |
| wcTemp="$( |
| busctl get-property xyz.openbmc_project.nvme.manager \ |
| ${nvmePath}${i} \ |
| xyz.openbmc_project.Sensor.Threshold.Critical \ |
| CriticalHigh | awk '{print $2}' |
| )" |
| wcTemp="$((wcTemp * 1000))" |
| if [[ -z "$nvmeList" ]]; then |
| nvmeList="\"nvme"${i}"\"" |
| else |
| nvmeList="${nvmeList}"", \"nvme"${i}"\"" |
| fi |
| fi |
| |
| sed -i "s/$name/${wcTemp}/g" "$TEMP_FILE" |
| done |
| |
| sed -i "s/@nvmeList@/${nvmeList}/g" "$TEMP_FILE" |
| |
| # Use shell parameter expansion to trim the ".in" suffix |
| mv "$TEMP_FILE" "${MARGIN_TABLE_FILE_IN%".in"}" |
| |
| # start read margin temp |
| /usr/bin/read-margin-temp & |
| |
| exit 0 |