1#!/bin/bash 2 3# shellcheck source=meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/logging-util 4source /usr/libexec/phosphor-gpio-monitor/logging-util 5 6HELP=" 7Usage: smc-event-logger <event> <id_gpio-name> 8<event> is the power rail event to log, 9e.g. assert / deassert. 10 11<id_gpio-name> is defined in json file, 12e.g. 5_health-mmc 13" 14 15# get assert or deassert message 16if [ "$1" == "assert" ]; then 17 action="SMCFailed" 18elif [ "$1" == "deassert" ]; then 19 action="SMCRestored" 20fi 21 22# get gpio chip ID 23MESSAGE=$2 24number="${MESSAGE%%_*}" 25 26# remove prefix from 0_xxxxxx to xxxxxx 27GPIO_NAME="${MESSAGE#*_}" 28 29MSG_ID="xyz.openbmc_project.State.SMC.$action" 30DEVICE_PATH="/xyz/openbmc_project/inventory/system/board/Minerva_Aegis/smc0" 31STASH_FILE="/run/$GPIO_NAME.log_entry" 32 33if gpio_logging_valid "$number" "$1" ; then 34 case $1 in 35 "-h") 36 echo "$HELP" 37 ;; 38 39 "assert") 40 if [ ! -s "$STASH_FILE" ]; then 41 /usr/bin/log-create "$MSG_ID" --json \ 42 "{ \"IDENTIFIER\": \"${DEVICE_PATH}\", \"FAILURE_TYPE\": \"${GPIO_NAME}\"}" \ 43 > "${STASH_FILE}" 44 fi 45 ;; 46 47 "deassert") 48 if [ -s "${STASH_FILE}" ]; then 49 log-resolve -p "$(< "${STASH_FILE}")" 50 rm "${STASH_FILE}" 51 fi 52 /usr/bin/log-create "$MSG_ID" --json \ 53 "{ \"IDENTIFIER\": \"${DEVICE_PATH}\"}" 54 ;; 55 esac 56fi 57 58exit 0 59