psvc_objects.h revision 7c478bd95313f5f23a4c958a745db2134aa03244
843e19887f64dde75055cf8842fc4db2171eff45johnlev/*
843e19887f64dde75055cf8842fc4db2171eff45johnlev * CDDL HEADER START
843e19887f64dde75055cf8842fc4db2171eff45johnlev *
843e19887f64dde75055cf8842fc4db2171eff45johnlev * The contents of this file are subject to the terms of the
843e19887f64dde75055cf8842fc4db2171eff45johnlev * Common Development and Distribution License, Version 1.0 only
843e19887f64dde75055cf8842fc4db2171eff45johnlev * (the "License"). You may not use this file except in compliance
843e19887f64dde75055cf8842fc4db2171eff45johnlev * with the License.
843e19887f64dde75055cf8842fc4db2171eff45johnlev *
843e19887f64dde75055cf8842fc4db2171eff45johnlev * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
843e19887f64dde75055cf8842fc4db2171eff45johnlev * or http://www.opensolaris.org/os/licensing.
843e19887f64dde75055cf8842fc4db2171eff45johnlev * See the License for the specific language governing permissions
843e19887f64dde75055cf8842fc4db2171eff45johnlev * and limitations under the License.
843e19887f64dde75055cf8842fc4db2171eff45johnlev *
843e19887f64dde75055cf8842fc4db2171eff45johnlev * When distributing Covered Code, include this CDDL HEADER in each
843e19887f64dde75055cf8842fc4db2171eff45johnlev * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
843e19887f64dde75055cf8842fc4db2171eff45johnlev * If applicable, add the following below this CDDL HEADER, with the
843e19887f64dde75055cf8842fc4db2171eff45johnlev * fields enclosed by brackets "[]" replaced with your own identifying
843e19887f64dde75055cf8842fc4db2171eff45johnlev * information: Portions Copyright [yyyy] [name of copyright owner]
843e19887f64dde75055cf8842fc4db2171eff45johnlev *
843e19887f64dde75055cf8842fc4db2171eff45johnlev * CDDL HEADER END
843e19887f64dde75055cf8842fc4db2171eff45johnlev */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab/*
843e19887f64dde75055cf8842fc4db2171eff45johnlev * Copyright 1999-2003 Sun Microsystems, Inc. All rights reserved.
843e19887f64dde75055cf8842fc4db2171eff45johnlev * Use is subject to license terms.
843e19887f64dde75055cf8842fc4db2171eff45johnlev */
843e19887f64dde75055cf8842fc4db2171eff45johnlev
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#ifndef _PSVC_OBJECTS_H
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define _PSVC_OBJECTS_H
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#pragma ident "%Z%%M% %I% %E% SMI"
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#ifdef __cplusplus
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rabextern "C" {
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#endif
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab/*
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab * Platform Services Framework definitions
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#include <sys/types.h>
843e19887f64dde75055cf8842fc4db2171eff45johnlev#include <pthread.h>
843e19887f64dde75055cf8842fc4db2171eff45johnlev
843e19887f64dde75055cf8842fc4db2171eff45johnlevtypedef struct psvc_opaque *psvc_opaque_t;
843e19887f64dde75055cf8842fc4db2171eff45johnlev
843e19887f64dde75055cf8842fc4db2171eff45johnlev/* Return values */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_SUCCESS 0
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_FAILURE -1
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_NOT_USED -1
843e19887f64dde75055cf8842fc4db2171eff45johnlev
843e19887f64dde75055cf8842fc4db2171eff45johnlev/* Class definitions */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_TEMPERATURE_SENSOR_CLASS 0
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_FAN_CLASS 1
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LED_CLASS 2
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_SYSTEM_CLASS 3
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_DIGITAL_SENSOR_CLASS 4
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_DIGITAL_CONTROL_CLASS 5
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_BOOLEAN_GPIO_CLASS 6
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_FAN_TACHOMETER_CLASS 7
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_ON_OFF_SWITCH_CLASS 8
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_KEYSWITCH_CLASS 9
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_8BIT_GPIO_CLASS 10
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_PHYSICAL_DEVICE_CLASS 11
843e19887f64dde75055cf8842fc4db2171eff45johnlev
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_CHASSIS "SYSTEM"
843e19887f64dde75055cf8842fc4db2171eff45johnlev
843e19887f64dde75055cf8842fc4db2171eff45johnlev/* Associations */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_PRESENCE_SENSOR 0
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_FAN_ONOFF_SENSOR 1
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_FAN_SPEED_TACHOMETER 2
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_FAN_PRIM_SEC_SELECTOR 3
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_DEV_TEMP_SENSOR 4
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_FAN_DRIVE_CONTROL 5
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_KS_NORMAL_POS_SENSOR 6
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_KS_DIAG_POS_SENSOR 7
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_KS_LOCK_POS_SENSOR 8
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_KS_OFF_POS_SENSOR 9
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_SLOT_FAULT_LED 10
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_SLOT_REMOVE_LED 11
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_TS_OVERTEMP_LED 12
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_PS_I_SENSOR 13
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_DEV_FAULT_SENSOR 14
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_DEV_FAULT_LED 15
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_TABLE 16
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_PARENT 17
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_CPU 18
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_ALTERNATE 19
5d2eda970e48f8985448151c73e699614ce9f357John Levon#define PSVC_HOTPLUG_ENABLE_SWITCH 20
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_PS 21
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_FAN 22
5d2eda970e48f8985448151c73e699614ce9f357John Levon#define PSVC_TS 23
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_DISK 24
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_LED 25
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_FSP_LED 26
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_KEYSWITCH 27
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_PCI_CARD 28
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_PHYSICAL_DEVICE 29
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_DEV_TYPE_SENSOR 30
5d2eda970e48f8985448151c73e699614ce9f357John Levon#define PSVC_FAN_TRAY_FANS 31
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_FRU 32
843e19887f64dde75055cf8842fc4db2171eff45johnlev
5d2eda970e48f8985448151c73e699614ce9f357John Levon
5d2eda970e48f8985448151c73e699614ce9f357John Levon/* Device "feature" definitions */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_DEV_PERM 0x0000000000000001 /* Permanently in system */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_DEV_HOTPLUG 0x0000000000000002 /* Hot-pluggable device */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_DEV_OPTION 0x0000000000000004 /* Option (not hot-pluggable) */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_DEV_PRIMARY 0x0000000000000010 /* Primary device */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_DEV_SECONDARY 0x0000000000000020 /* Secondary device */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_DEV_RDONLY 0x0000000000000100 /* Read only device */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_DEV_RDWR 0x0000000000000400 /* read/write device */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_DEV_FRU 0x0000000000000800 /* device is a FRU */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LOW_WARN 0x0000000000001000
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LOW_SHUT 0x0000000000002000
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_HIGH_WARN 0x0000000000004000
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_HIGH_SHUT 0x0000000000008000
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_CONVERSION_TABLE 0x0000000000010000 /* Conversion table */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_OPT_TEMP 0x0000000000020000 /* Optimal Temperature */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_HW_LOW_SHUT 0x0000000000040000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_HW_HIGH_SHUT 0x0000000000080000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_FAN_DRIVE_PR 0x0001000000000000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_TEMP_DRIVEN 0x0002000000000000 /* Temperature driven */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_SPEED_CTRL_PR 0x0004000000000000 /* Variable speed control */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_FAN_ON_OFF 0x0008000000000000 /* On/off fans */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_CLOSED_LOOP_CTRL 0x0010000000000000 /* Closed loop control */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_FAN_DRIVE_TABLE_PR 0x0010000000000000 /* oC to fan input table */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_DIE_TEMP 0x0001000000000000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_AMB_TEMP 0x0002000000000000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_DIGI_SENSOR 0x0100000000000000 /* A to D converter */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_BI_STATE 0x0001000000000000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_TRI_STATE 0x0002000000000000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_GREEN 0x0010000000000000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_AMBER 0x0020000000000000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_OUTPUT 0x0100000000000000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_INPUT 0x0200000000000000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_BIDIR 0x0400000000000000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_BIT_POS 0x0001000000000000 /* One bit per key positon */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_VAL_POS 0x0002000000000000 /* One value per key position */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_NORMAL_POS_AV 0x0010000000000000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_DIAG_POS_AV 0x0020000000000000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_LOCK_POS_AV 0x0040000000000000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_OFF_POS_AV 0x0080000000000000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_GPIO_PORT 0x0001000000000000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_GPIO_REG 0x0002000000000000
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
843e19887f64dde75055cf8842fc4db2171eff45johnlev/* LED colors */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LED_GREEN "GREEN"
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LED_AMBER "AMBER"
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LED_WHITE "WHITE"
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LED_RED "RED"
843e19887f64dde75055cf8842fc4db2171eff45johnlev
843e19887f64dde75055cf8842fc4db2171eff45johnlev/* States */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_OK "OK"
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_ERROR "ERROR"
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_DEGRADED "DEGRADED"
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_STOPPED "STOPPED"
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_OVERHEATING "OVERHEATING"
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_OFF "OFF"
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_ON "ON"
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_HOTPLUGGED "HOTPLUGGED" /* hotplugged, but not yet enabled */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab/*
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab * The Following States are for the Locking Object created by PSARC 2002/003
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_LOCK_RUNNING "running"
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_LOCK_ENABLED "enabled"
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_LOCK_DISABLED "disabled"
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab/* LED states */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LED_OFF PSVC_OFF
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LED_ON PSVC_ON
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LED_SLOW_BLINK "SLOW_BLINK"
5d2eda970e48f8985448151c73e699614ce9f357John Levon#define PSVC_LED_FAST_BLINK "FAST_BLINK"
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab/* On/Off switch states */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_SWITCH_OFF PSVC_OFF
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_SWITCH_ON PSVC_ON
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab/* Keyswitch positions */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_OFF_POS PSVC_OFF
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_NORMAL_POS "NORMAL"
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_LOCKED_POS "LOCKED"
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_DIAG_POS "DIAG"
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab/* Fault strings */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_NO_FAULT "NO_FAULT"
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_GEN_FAULT "DEVICE_FAULT"
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_PS_LLO_FLT "PS_LLO_FAULT"
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_PS_FAN_FLT "PS_FAN_FAULT"
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_PS_TEMP_FLT "PS_TEMP_FAULT"
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_PS_ISHARE_FLT "PS_ISHARE_FAULT"
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_PS_TYPE_FLT "PS_TYPE_FLT"
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_TEMP_LO_WARN "TEMP_LOW_WARNING"
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_TEMP_LO_SHUT "TEMP_LOW_SHUTDOWN"
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_TEMP_HI_WARN "TEMP_HIGH_WARNING"
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_TEMP_HI_SHUT "TEMP_HIGH_SHUTDOWN"
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab/*
843e19887f64dde75055cf8842fc4db2171eff45johnlev * When Adding Attributes be sure to add the string value of the
843e19887f64dde75055cf8842fc4db2171eff45johnlev * Attribute to attr_str_tab in psvc_objects_class.h
843e19887f64dde75055cf8842fc4db2171eff45johnlev */
843e19887f64dde75055cf8842fc4db2171eff45johnlev
843e19887f64dde75055cf8842fc4db2171eff45johnlev/* Attribute names */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_CLASS_ATTR 0 /* "_class" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_SUBCLASS_ATTR 1 /* "Subclass" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_PRESENCE_ATTR 2 /* "Presence" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_PREV_PRESENCE_ATTR 3 /* Previous-presence */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_STATE_ATTR 4 /* "State" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_PREV_STATE_ATTR 5 /* "Previous-state" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_ENABLE_ATTR 6 /* "Enabled" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_FAULTID_ATTR 7 /* "FaultInformation" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_FEATURES_ATTR 8 /* "Features" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LABEL_ATTR 9 /* "Label" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_FRUID_ATTR 10 /* "Fruid" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_INSTANCE_ATTR 11 /* "Instance" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LED_COLOR_ATTR 12 /* "Led-color" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LO_WARN_ATTR 13 /* "Lo-warn" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LO_SHUT_ATTR 14 /* "Lo-shut" */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_HI_WARN_ATTR 15 /* "Hi-warn" */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_HI_SHUT_ATTR 16 /* "Hi-shut" */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_OPTIMAL_TEMP_ATTR 17 /* "Opt-temp" */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_HW_HI_SHUT_ATTR 18 /* "Hw-hi-shut" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_HW_LO_SHUT_ATTR 19 /* "Hw-lo-shut" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_SETPOINT_ATTR 20 /* "Setpoint" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_HYSTERESIS_ATTR 21 /* "Hysteresis" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LOOPGAIN_ATTR 22 /* "Loopgain" */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_LOOPBIAS_ATTR 23 /* "Loopbias" */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_TEMP_DIFFERENTIAL_ATTR 24 /* "Temp_differential" */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_TEMP_DIFFERENTIAL_INDEX_ATTR 25 /* Temp_differential_index */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_SENSOR_VALUE_ATTR 26 /* "Sensor-value" */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_GPIO_VALUE_ATTR 27 /* "Gpio-value" */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_GPIO_BITS 28 /* "#Bits" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_CONTROL_VALUE_ATTR 29 /* "Control-value" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LED_STATE_ATTR 30 /* "Led-state" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_SWITCH_STATE_ATTR 31 /* "Switch-state" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_PROBE_RESULT_ATTR 32 /* "Probe-result" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_TABLE_VALUE_ATTR 33 /* "Table_value" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_ASSOC_ID_ATTR 34 /* "Assoc_id" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_ASSOC_MATCHES_ATTR 35 /* "Assoc_matches" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_ADDR_SPEC_ATTR 36 /* "Addr-spec" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_OBJECT_ID_ATTR 37 /* "Object-id" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LIT_COUNT_ATTR 38 /* "Led-lit-count" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_FRU_INFO_ATTR 39 /* "FRU-info" */
843e19887f64dde75055cf8842fc4db2171eff45johnlev
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_LED_IS_LOCATOR_ATTR 40 /* "IsLocator" */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_LED_LOCATOR_NAME_ATTR 41 /* "LocatorName" */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_LOCATOR_TRUE "true"
843e19887f64dde75055cf8842fc4db2171eff45johnlev
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab/* PSVC_PRESENCE_ATTR values */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_ABSENT 0
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_PRESENT 1
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
843e19887f64dde75055cf8842fc4db2171eff45johnlev/* PSVC_ENABLE_ATTR values */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_DISABLED 0
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_ENABLED 1
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
843e19887f64dde75055cf8842fc4db2171eff45johnlev/* PSVC_PROBE_RESULT_ATTR values */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_DEV_PROBE_SUCCESS PSVC_SUCCESS
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_DEV_PROBE_FAILED PSVC_FAILURE
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
843e19887f64dde75055cf8842fc4db2171eff45johnlev/* Size of fan temperature differential array */
843e19887f64dde75055cf8842fc4db2171eff45johnlev#define PSVC_MAXERRORS 2
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab/* Address specification macros */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_VERSION 0 /* Current version */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_VERSION_SHIFT 0
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_ACTIVE_LOW_SHIFT 7
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_BIT_NUM_SHIFT 4
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_INVERT_SHIFT 4
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_PORT_SHIFT 8
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_BITSHIFT_SHIFT 12
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_BYTEMASK_SHIFT 16
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_REG_SHIFT 24
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_TYPE_SHIFT 32
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_BUSADDR_SHIFT 40
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_BUSNUM_SHIFT 48
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_CNTLR_SHIFT 56
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_GET_VERSION(X) ((X >> PSVC_VERSION_SHIFT) & 0xF)
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_IS_ACTIVE_LOW(X) ((X >> PSVC_ACTIVE_LOW_SHIFT) & 0x1)
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_GET_BIT_NUM(X) ((X >> PSVC_BIT_NUM_SHIFT) & 0x7)
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_HP_INVERT(X) (((X >> PSVC_INVERT_SHIFT) & 0x7) == 1)
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_GET_ASPEC_PORT(X) ((X >> PSVC_PORT_SHIFT) & 0xF)
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_GET_ASPEC_BITSHIFT(X) ((X >> PSVC_BITSHIFT_SHIFT) & 0xF)
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_GET_ASPEC_BYTEMASK(X) ((X >> PSVC_BYTEMASK_SHIFT) & 0xFF)
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_GET_ASPEC_REG(X) ((X >> PSVC_REG_SHIFT) & 0xFF)
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_GET_ASPEC_TYPE(X) ((X >> PSVC_TYPE_SHIFT) & 0xFF)
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_GET_ASPEC_BUSADDR(X) ((X >> PSVC_BUSADDR_SHIFT) & 0xFF)
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_GET_ASPEC_BUSNUM(X) ((X >> PSVC_BUSNUM_SHIFT) & 0xFF)
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_GET_ASPEC_CNTLR(X) ((X >> PSVC_CNTLR_SHIFT) & 0xFF)
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab/* Address spec device_types */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_I2C_AT24 0
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_I2C_HPC3130 1
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_I2C_LM75 2
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_I2C_LTC1427 3
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_I2C_MAX1617 4
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_I2C_PCF8574 5
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_I2C_PCF8591 6
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_I2C_SSC050 7
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_I2C_TDA8444 8
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_I2C_SSC100 9
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab/* numbers of attempts for retrying requests over the I2C bus */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_NUM_OF_RETRIES 2
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#define PSVC_THRESHOLD_COUNTER 2
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab/* Prototypes */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#ifndef LIBRARY_BUILD
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rabint32_t psvc_init(psvc_opaque_t *);
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rabint32_t psvc_fini(psvc_opaque_t);
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rabint32_t psvc_get_attr(psvc_opaque_t, char *, int32_t, void *, ...);
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rabint32_t psvc_set_attr(psvc_opaque_t, char *, int32_t, void *);
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rabvoid psvcplugin_add_children(char *parent_path);
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rabvoid psvcplugin_lookup(char *name, char *parent, picl_nodehdl_t *node);
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab#endif
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rab/* FRU reading structure */
a576ab5b6e08c47732b3dedca9eaa8a8cbb85720rabtypedef struct {
843e19887f64dde75055cf8842fc4db2171eff45johnlev int32_t buf_start;
843e19887f64dde75055cf8842fc4db2171eff45johnlev char *buf;
843e19887f64dde75055cf8842fc4db2171eff45johnlev int32_t read_size;
843e19887f64dde75055cf8842fc4db2171eff45johnlev}fru_info_t;
843e19887f64dde75055cf8842fc4db2171eff45johnlev
843e19887f64dde75055cf8842fc4db2171eff45johnlev/* Mutex used for Daktari Fan speed reading */
843e19887f64dde75055cf8842fc4db2171eff45johnlevextern pthread_mutex_t fan_mutex;
843e19887f64dde75055cf8842fc4db2171eff45johnlev
843e19887f64dde75055cf8842fc4db2171eff45johnlev#ifdef __cplusplus
843e19887f64dde75055cf8842fc4db2171eff45johnlev}
843e19887f64dde75055cf8842fc4db2171eff45johnlev#endif
843e19887f64dde75055cf8842fc4db2171eff45johnlev
843e19887f64dde75055cf8842fc4db2171eff45johnlev#endif /* _PSVC_OBJECTS_H */
843e19887f64dde75055cf8842fc4db2171eff45johnlev