/*
* Intel(R) Enclosure LED Utilities
* Copyright (C) 2009-2018 Intel Corporation.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
#ifndef _IBPI_H_INCLUDED_
#define _IBPI_H_INCLUDED_
/**
* @brief IBPI pattern identifies.
*
* The IBPI specification lists the following pattern names:
*
* - NORMAL - either drive is present or missing, activity LED does not
* matter. The rest of the LEDs are off.
* - FAIL - a block device has failed or is missing. Failure LED is
* active and the behavior is depended on implementation
* of enclosure management processor.
* - REBUILD - this means a RAID device is recovering or rebuilding
* its data. Depending on implementation of enclosure
* management processor appropriate LED is blinking or solid.
* - ICA - In a Critical Array, this means a RAID device is degraded and
* there's no spare device available.
* - IFA - In a Failed Array, this means a RAID device is damaged and
* cannot be recovered or rebuild.
* - PFA - Predict Failure Analysis state means that a block device will
* fail soon, so it must be replaced with working one.
* - LOCATE - turns Locate LED on to identify a block device or slot.
*
* Additionally the following patterns has been introduced, just for the purpose
* of LED control utility.
*
* - UNKNOWN - unknown IBPI pattern and it means do not control LEDs for
* a device it is set (no LED management).
* - ONESHOT_NORMAL - this state means that ledmon just started and it does not
* know anything about existing patterns set, so it will off all
* the LEDs just in case of any problem in the future. The state
* is set, when a RAID device disappears, too. Oneshot means
* as soon application applies the state it will change
* to UNKNOWN.
* - ADDED this state means that device previously known to ledmon is
* restored. This state will be changed to ONESHOT_NORMAL.
* - REMOVED this state means that device was removed from system. It
* will be changed to ADDED after restoring device to system.
*/
enum ibpi_pattern {
IBPI_PATTERN_UNKNOWN = 0,
IBPI_PATTERN_NONE, /* used only to initialize ibpi_prev */
IBPI_PATTERN_NORMAL,
IBPI_PATTERN_ONESHOT_NORMAL,
IBPI_PATTERN_DEGRADED,
IBPI_PATTERN_HOTSPARE,
IBPI_PATTERN_REBUILD,
IBPI_PATTERN_FAILED_ARRAY,
IBPI_PATTERN_PFA,
IBPI_PATTERN_FAILED_DRIVE,
IBPI_PATTERN_LOCATE,
IBPI_PATTERN_LOCATE_OFF,
IBPI_PATTERN_ADDED,
IBPI_PATTERN_REMOVED,
/* Below are SES-2 codes. Note that by default most IBPI messages are
* translated into SES when needed but SES codes can be added also. */
SES_REQ_ABORT,
SES_REQ_REBUILD,
SES_REQ_IFA,
SES_REQ_ICA,
SES_REQ_CONS_CHECK,
SES_REQ_HOSTSPARE,
SES_REQ_RSVD_DEV,
SES_REQ_OK,
SES_REQ_IDENT,
SES_REQ_RM,
SES_REQ_INS,
SES_REQ_MISSING,
SES_REQ_DNR,
SES_REQ_ACTIVE,
SES_REQ_EN_BB,
SES_REQ_EN_BA,
SES_REQ_DEV_OFF,
SES_REQ_FAULT,
SES_REQ_PRDFAIL,
ibpi_pattern_count,
};
extern const char *ibpi_str[ibpi_pattern_count];
#endif /* _IBPI_H_INCLUDED_ */