#ifndef _SYS_ENVMON_H
#define _SYS_ENVMON_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
#include <sys/ioccom.h>
#define ENVMON_VAL_UNAVAILABLE ((int16_t)(-32768))
#define ENVMON_SENSOR_OK 0
#define ENVMON_NOT_PRESENT 1
#define ENVMON_INACCESSIBLE 2
#define ENVMON_BASE 200
#define ENVMONIOCSYSINFO _IOR('a', ENVMON_BASE + 0, envmon_sysinfo_t)
#define ENVMONIOCVOLTSENSOR _IOWR('a', ENVMON_BASE + 1, envmon_sensor_t)
#define ENVMONIOCAMPSENSOR _IOWR('a', ENVMON_BASE + 2, envmon_sensor_t)
#define ENVMONIOCTEMPSENSOR _IOWR('a', ENVMON_BASE + 3, envmon_sensor_t)
#define ENVMONIOCFAN _IOWR('a', ENVMON_BASE + 4, envmon_fan_t)
#define ENVMONIOCVOLTIND _IOWR('a', ENVMON_BASE + 5, envmon_indicator_t)
#define ENVMONIOCAMPIND _IOWR('a', ENVMON_BASE + 6, envmon_indicator_t)
#define ENVMONIOCTEMPIND _IOWR('a', ENVMON_BASE + 7, envmon_indicator_t)
#define ENVMONIOCFANIND _IOWR('a', ENVMON_BASE + 8, envmon_indicator_t)
#define ENVMONIOCGETLED _IOWR('a', ENVMON_BASE + 9, envmon_led_info_t)
#define ENVMONIOCSETLED _IOW('a', ENVMON_BASE + 10, envmon_led_ctl_t)
#define ENVMONIOCHPU _IOWR('a', ENVMON_BASE + 11, envmon_hpu_t)
#define ENVMONIOCGETKEYSW _IOR('a', ENVMON_BASE + 12, envmon_keysw_pos_t)
#define ENVMONIOCGETALARM \
_IOWR('a', ENVMON_BASE + 13, envmon_alarm_info_t)
#define ENVMONIOCSETALARM _IOWR('a', ENVMON_BASE + 14, envmon_alarm_ctl_t)
#define ENVMONIOCCHASSISSERIALNUM \
_IOR('a', ENVMON_BASE + 15, envmon_chassis_t)
#define ENVMON_MAXNAMELEN 32
typedef struct {
char name[ENVMON_MAXNAMELEN];
} envmon_handle_t;
typedef struct {
int16_t warning;
int16_t shutdown;
int16_t poweroff;
} envmon_thresholds_t;
typedef struct {
envmon_handle_t id;
uint16_t sensor_status;
int16_t value;
envmon_thresholds_t lowthresholds;
envmon_thresholds_t highthresholds;
envmon_handle_t next_id;
} envmon_sensor_t;
typedef struct {
envmon_handle_t id;
uint16_t sensor_status;
uint16_t condition;
envmon_handle_t next_id;
} envmon_indicator_t;
typedef struct {
envmon_handle_t id;
uint16_t sensor_status;
uint16_t speed;
char units[ENVMON_MAXNAMELEN];
envmon_thresholds_t lowthresholds;
envmon_handle_t next_id;
} envmon_fan_t;
#define ENVMON_LED_OFF 0
#define ENVMON_LED_ON 1
#define ENVMON_LED_BLINKING 2
#define ENVMON_LED_FLASHING 3
#define ENVMON_LED_CLR_NONE ((int8_t)(-1))
#define ENVMON_LED_CLR_ANY 0
#define ENVMON_LED_CLR_WHITE 1
#define ENVMON_LED_CLR_BLUE 2
#define ENVMON_LED_CLR_GREEN 3
#define ENVMON_LED_CLR_AMBER 4
#define ENVMON_LED_CLR_RED 5
typedef struct {
envmon_handle_t id;
uint16_t sensor_status;
int8_t led_state;
int8_t led_color;
envmon_handle_t next_id;
} envmon_led_info_t;
typedef struct {
envmon_handle_t id;
int8_t led_state;
} envmon_led_ctl_t;
#define ENVMON_ALARM_OFF 0
#define ENVMON_ALARM_ON 1
typedef struct {
envmon_handle_t id;
uint16_t sensor_status;
int8_t alarm_state;
envmon_handle_t next_id;
} envmon_alarm_info_t;
typedef struct {
envmon_handle_t id;
int8_t alarm_state;
} envmon_alarm_ctl_t;
#define ENVMON_FRU_NOT_PRESENT 0
#define ENVMON_FRU_PRESENT 1
#define ENVMON_FRU_FAULT 2
#define ENVMON_FRU_DOWNLOAD 3
typedef struct {
envmon_handle_t id;
uint8_t sensor_status;
uint8_t fru_status;
envmon_handle_t next_id;
} envmon_hpu_t;
typedef struct {
uint16_t maxVoltSens;
uint16_t maxVoltInd;
uint16_t maxAmpSens;
uint16_t maxAmpInd;
uint16_t maxTempSens;
uint16_t maxTempInd;
uint16_t maxFanSens;
uint16_t maxFanInd;
uint16_t maxLED;
uint16_t maxHPU;
} envmon_sysinfo_t;
typedef enum envmon_keysw_pos {
ENVMON_KEYSW_POS_UNKNOWN = 0,
ENVMON_KEYSW_POS_NORMAL,
ENVMON_KEYSW_POS_DIAG,
ENVMON_KEYSW_POS_LOCKED,
ENVMON_KEYSW_POS_OFF
} envmon_keysw_pos_t;
typedef struct {
char serial_number[ENVMON_MAXNAMELEN];
} envmon_chassis_t;
#ifdef __cplusplus
}
#endif
#endif