rmc_comm_hproto.h revision 7c478bd95313f5f23a4c958a745db2134aa03244
/*
* Copyright 2001-2003 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_RMC_COMM_HPROTO_H
#define _SYS_RMC_COMM_HPROTO_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
/*
* data types used in the data protocol fields
*/
typedef unsigned char rsci8;
typedef unsigned short rsci16;
typedef short rscis16;
#ifdef _LP64
typedef unsigned int rsci32;
typedef unsigned long rsci64;
#else
typedef unsigned long rsci32;
typedef unsigned long long rsci64;
#endif
/*
* handle definition. Handles are used in the high-level data protocol
* to identify FRU, sensors (temperature, voltage), and so on.
*/
typedef rsci16 dp_handle_t;
#define DP_NULL_HANDLE 0xffff
#define DP_MAX_HANDLE_NAME 32
#define DP_NULL_MSG 0x00
/*
* Supported message types and associated data types:
*/
#define DP_RESET_RSC 0x7A
#define DP_RESET_RSC_R 0x5A
#define DP_UPDATE_FLASH 0x66
#define DP_UPDATE_FLASH_R 0x46
typedef struct dp_update_flash_r {
rsci32 status; /* completion code */
} dp_update_flash_r_t;
#define DP_RUN_TEST 0x74
typedef struct dp_run_test {
rsci32 testno; /* test number to run; see below. */
rsci32 param_len; /* # bytes in test parameter data. */
} dp_run_test_t;
/* followed by test parameters; see individual tests below. */
#define DP_RUN_TEST_R 0x54
typedef struct dp_run_test_r {
rsci32 status; /* 0 = test passed, otherwise see failure */
/* codes below. */
rsci32 idatalen; /* # items in input data array */
rsci32 odatalen; /* # items in output data array */
#define DP_MAX_RUN_TEST_DATALEN (DP_MAX_MSGLEN-32)/2
rsci8 idata[DP_MAX_RUN_TEST_DATALEN]; /* input data array */
rsci8 odata[DP_MAX_RUN_TEST_DATALEN]; /* output data array */
} dp_run_test_r_t;
#define RSC_TEST_PASSED 0
#define RSC_TEST_SW_FAILURE 1
#define RSC_TEST_BAD_DATA 2
#define RSC_TEST_NO_RESPONSE 3
#define RSC_TEST_BAD_CRC 4
#define RSC_TEST_BAD_PARAMS 5
#define RSC_TEST_NO_DEVICE 6
#define RSC_TEST_DEV_SETUP_FAIL 7
#define RSC_TEST_MEM_ALLOC_FAIL 8
#define RSC_TEST_ENET_ADDR_FAIL 9
#define RSC_TEST_DEV_INFO_FAIL 10
#define RSC_TEST_NYI 255
#define DP_RSC_STATUS 0x73
#define DP_RSC_STATUS_R 0x53
typedef struct dp_rsc_status_r {
/* The first six fields here must not be changed to ensure that they */
/* are the same in all versions of RSC, most notably when compared to */
/* 1.x. New fields must be added to the end of the structure. */
rsci16 main_rev_major;
rsci16 main_rev_minor;
rsci16 bootmon_rev_major;
rsci16 bootmon_rev_minor;
rsci16 post_status;
rsci16 nusers; /* number of users currently logged in to */
/* CLI. */
/* Any new fields in the structure may be added after this point ONLY! */
rsci16 release_rev_major;
rsci16 release_rev_minor;
rsci16 release_rev_micro;
rsci16 main_rev_micro;
rsci16 bootmon_rev_micro;
rsci16 hardware_rev;
rsci32 bm_cksum;
rsci8 rsc_build;
char creationDate[256];
rsci32 fw_cksum;
rsci32 sys_mem;
rsci32 nvram_version;
} dp_rsc_status_r_t;
#define DP_SET_CFGVAR 0x76
typedef struct dp_set_cfgvar {
rsci32 hidden; /* boolean */
} dp_set_cfgvar_t;
/* Data is variable name & new value as zero-terminated ascii strings. */
#define DP_SET_CFGVAR_R 0x56
typedef struct dp_set_cfgvar_r {
rsci32 status; /* completion code */
} dp_set_cfgvar_r_t;
#define DP_GET_CFGVAR 0x67
/* Data is variable name as zero-terminated ascii string. */
#define DP_GET_CFGVAR_R 0x47
typedef struct dp_get_cfgvar_r {
rsci32 status; /* completion code */
} dp_get_cfgvar_r_t;
/* followed by value of variable as a zero-terminated ascii string. */
#define DP_GET_CFGVAR_NAME 0x6E
/*
* Data is variable name as zero-terminated ascii string. A zero-length
* string means 'return the name of the "first" variable.'
*/
#define DP_GET_CFGVAR_NAME_R 0x4E
typedef struct dp_get_cfgvar_name_r {
rsci32 status; /* completion code */
} dp_get_cfgvar_name_r_t;
/* followed by name of "next" variable as a zero-terminated ascii string. */
#define DP_SET_DATE_TIME 0x64
#define DP_SET_DATE_TIME_IGNORE_FIELD 0xFFFF
typedef struct dp_set_date_time {
rsci32 year; /* Full year, IE 1997 */
rsci32 month; /* 1 = Jan, 2 = Feb, etc. */
rsci32 day; /* Day of the month, 1 to 31. */
rsci32 hour; /* 0 to 23 */
rsci32 minute; /* 0 to 59 */
rsci32 second; /* 0 to 59 */
} dp_set_date_time_t;
#define DP_SET_DATE_TIME_R 0x44
typedef struct dp_set_date_time_r {
rsci32 status; /* 0 - succes, non-zero - fail. */
} dp_set_date_time_r_t;
#define DP_GET_DATE_TIME 0x65
#define DP_GET_DATE_TIME_R 0x45
typedef struct dp_get_date_time_r {
rsci32 status; /* completion code */
rsci32 current_datetime; /* in Unix format */
} dp_get_date_time_r_t;
/* followed by the date represented as a zero-terminated ascii string. */
#define DP_SEND_ALERT 0x61
typedef struct dp_send_alert {
rsci32 critical; /* boolean */
} dp_send_alert_t;
#define DP_SEND_ALERT_R 0x41
typedef struct dp_send_alert_r {
rsci32 status; /* completion code */
} dp_send_alert_r_t;
#define DP_GET_TEMP 0x78
#define DP_GET_TEMP_R 0x58
typedef struct dp_get_temp_r {
rsci32 status;
rsci32 current_temp;
} dp_get_temp_r_t;
#define DP_GET_SDP_VERSION 0x7B
#define DP_GET_SDP_VERSION_R 0x5B
typedef struct dp_get_sdp_version_r {
rsci32 version;
} dp_get_sdp_version_r_t;
#define DP_GET_TOD_CLOCK 0x7C
#define DP_GET_TOD_CLOCK_R 0x5C
typedef struct dp_get_tod_clock_r {
rsci32 current_tod;
} dp_get_tod_clock_r_t;
#define DP_MAX_LOGSIZE (DP_MAX_MSGLEN-24)
#define DP_GET_EVENT_LOG 0x7D
#define DP_GET_EVENT_LOG_R 0x5D
typedef struct dp_get_event_log_r {
rsci32 entry_count;
rsci8 data[DP_MAX_LOGSIZE];
} dp_get_event_log_r_t;
typedef struct dp_event_log_entry {
rsci32 eventTime;
rsci32 eventId;
rsci32 paramLen;
char param[256];
} dp_event_log_entry_t;
#define DP_GET_PCMCIA_INFO 0x7E
#define DP_GET_PCMCIA_INFO_R 0x5E
typedef struct dp_get_pcmcia_info_r {
rsci32 card_present; /* true=present, false=no card */
rsci32 idInfoLen;
rsci8 idInfo[256];
} dp_get_pcmcia_info_r_t;
#define DP_USER_MAX 16
#define DP_USER_NAME_SIZE 16
/* User sub-commands */
#define DP_USER_CMD_ADD 0x1
#define DP_USER_CMD_DEL 0x2
#define DP_USER_CMD_SHOW 0x3
#define DP_USER_CMD_PASSWORD 0x4
#define DP_USER_CMD_PERM 0x5
/*
* The following fields are used to set the user permissions.
* Each must be represented as a single bit in the parm field.
*/
#define DP_USER_PERM_C 0x1
#define DP_USER_PERM_U 0x2
#define DP_USER_PERM_A 0x4
#define DP_USER_PERM_R 0x8
/*
* values for parm for CMD_SHOW. Anything other than 0 will show
* the user # up to and including DP_USER_MAX
*/
#define DP_USER_SHOW_USERNAME 0x0
/* Error values for status */
#define DP_ERR_USER_FULL 0x1 /* No free user slots */
#define DP_ERR_USER_NONE 0x2 /* User does not exist */
#define DP_ERR_USER_BAD 0x3 /* Malformed username */
#define DP_ERR_USER_NACT 0x4 /* user # not activated */
#define DP_ERR_USER_THERE 0x5 /* user already registered */
#define DP_ERR_USER_PASSWD 0x6 /* invalid password */
#define DP_ERR_USER_WARNING 0x7 /* Malformed username warning */
#define DP_ERR_USER_NYI 0xFD /* Not yet implemented */
#define DP_ERR_USER_UNDEF 0xFE /* Undefine error */
#define DP_ERR_USER_CMD 0xFF /* Invalid Command */
#define DP_USER_ADM 0x50
/*
* The parm field is used by the permission command to set specific
* permissions. The parm field is also used by the show command to
* indicate if the user name is specified or not.
*/
typedef struct dp_user_adm {
rsci32 command;
rsci32 parm;
} dp_user_adm_t;
/*
* followed by zero-terminated ascii strings. All user commands
* are followed by the username. The password command is also
* followed by the password.
*/
#define DP_USER_ADM_R 0x51
/*
* the response field is used to return the user permissions
* for the user permissions command. The response is also used
* to echo back the user selection for the show command.
*/
typedef struct dp_user_adm_r {
rsci32 status; /* completion code */
rsci32 command; /* echo back adm command */
rsci32 response;
} dp_user_adm_r_t;
/* followed by a zero-terminated ascii string for the show command. */
#define DP_MODEM_PASS 0
#define DP_MODEM_FAIL -1
/* Commands used for rscadm modem_setup */
#define DP_MODEM_CONNECT 0x30
#define DP_MODEM_CONNECT_R 0x31
typedef struct dp_modem_connect_r {
rsci32 status;
} dp_modem_connect_r_t;
/* There is no reponse to a modem_data command */
/* The modem data command goes in both directions */
#define DP_MODEM_DATA 0x32
/* followed by a zero-terminated ascii string */
#define DP_MODEM_DISCONNECT 0x34
#define DP_MODEM_DISCONNECT_R 0x35
typedef struct dp_modem_disconnect_r {
rsci32 status;
} dp_modem_disconnect_r_t;
#define DP_GET_TICKCNT 0x22
#define DP_GET_TICKCNT_R 0x23
typedef struct dp_get_tickcnt_r {
rsci32 upper; /* MSW of 64 bit tick count */
rsci32 lower; /* LSW of 64 bit tick count */
} dp_get_tickcnt_r_t;
#define DP_SET_DEFAULT_CFG 0x72
#define DP_SET_DEFAULT_CFG_R 0x52
typedef struct dp_set_default_cfg_r {
rsci32 status;
} dp_set_default_cfg_r_t;
#define DP_GET_NETWORK_CFG 0x59
#define DP_GET_NETWORK_CFG_R 0x79
typedef struct dp_get_network_cfg_r {
rsci32 status;
char ipMode[7];
char ipAddr[16];
char ipMask[16];
char ipGateway[16];
char ethAddr[18];
char ipDHCPServer[16];
} dp_get_network_cfg_r_t;
/*
* Parameters for DP_RUN_TEST message:
*/
/*
* Test routines need to know what the low-level protocol sync
* character is.
*/
#define RSC_TEST_SERIAL 0
typedef struct rsc_serial_test {
rsci32 testtype;
#define RSC_SERIAL_TTYC_LB 0
#define RSC_SERIAL_TTYC_LB_OFF 1
#define RSC_SERIAL_TTYD_LB 2
#define RSC_SERIAL_TTYD_LB_OFF 3
#define RSC_SERIAL_TTYCD_LB 4
#define RSC_SERIAL_TTYCD_LB_OFF 5
#define RSC_SERIAL_TTYU_INT_LB 6
#define RSC_SERIAL_TTYU_EXT_LB 7
rsci32 baud;
rsci32 passes;
rsci32 datalen;
rsci8 data[DP_MAX_MSGLEN-32];
} rsc_serial_test_t;
#define RSC_TEST_ENET 1
typedef struct rsc_enet_test {
rsci32 testtype;
#define RSC_ENET_INT_LB 0
#define RSC_ENET_EXT_LB 1
#define RSC_ENET_PING 2
#define RSC_ENET_INT_PHY_LB 3
rsci8 ip_addr[4];
rsci32 passes;
rsci32 datalen;
rsci8 data[DP_MAX_MSGLEN-32];
} rsc_enet_test_t;
#define RSC_TEST_FLASH_CRC 2
typedef struct rsc_flash_crcs_r {
rsci32 boot_crc;
rsci32 main_crc;
} rsc_flash_crcs_r_t;
#define RSC_TEST_SEEPROM_CRC 3
typedef struct rsc_seeprom_crcs_r {
rsci32 hdr_crc;
rsci32 main_crc;
} rsc_seeprom_crcs_r_t;
#define RSC_TEST_FRU_SEEPROM_CRC 4
typedef struct rsc_fru_crcs_r {
rsci32 ro_hdr_crc;
rsci32 seg_sd_crc;
} rsc_fru_crcs_r_t;
/*
* new commands definitions
*/
#define DP_GET_SYSINFO 0x20
#define DP_GET_SYSINFO_R 0x21
typedef struct dp_get_sysinfo_r {
rsci8 maxTemp; /* max number of temperature sensors */
rsci8 maxFan; /* max number of FANs */
rsci8 maxPSU; /* max number of PSUs slot */
rsci8 maxLED; /* max number of LEDs */
rsci8 maxVolt; /* max number of voltage sensors */
rsci8 maxFRU; /* max number of FRUs (field replac. unit) */
rsci8 maxCircuitBrks; /* max number of circuit breakers */
rsci8 keyswitch; /* key switch setting value */
} dp_get_sysinfo_r_t;
#define DP_GET_TEMPERATURES 0x24
typedef struct dp_get_temperatures {
dp_handle_t handle; /* handle of a temperature sensor */
/* or <null handle> (0xffff) */
} dp_get_temperatures_t;
/* Data is variable name & new value as zero-terminated ascii strings. */
#define DP_GET_TEMPERATURES_R 0x25
typedef rscis16 dp_tempr_t;
enum sensor_status {
DP_SENSOR_DATA_AVAILABLE = 0,
DP_SENSOR_DATA_UNAVAILABLE,
DP_SENSOR_NOT_PRESENT
};
typedef struct dp_tempr_status {
dp_handle_t handle;
rsci8 sensor_status; /* tells whether the reading is */
/* available or not */
dp_tempr_t value; /* temperature value (celsius). */
dp_tempr_t low_warning;
dp_tempr_t low_soft_shutdown;
dp_tempr_t low_hard_shutdown;
dp_tempr_t high_warning;
dp_tempr_t high_soft_shutdown;
dp_tempr_t high_hard_shutdown;
} dp_tempr_status_t;
typedef struct dp_get_temperatures_r {
rsci8 num_temps;
dp_tempr_status_t temp_status[1];
} dp_get_temperatures_r_t;
#define DP_GET_FAN_STATUS 0x26
typedef struct dp_get_fan_status {
dp_handle_t handle; /* handle of a temperature sensor */
/* or <null handle> (0xffff) */
} dp_get_fan_status_t;
#define DP_GET_FAN_STATUS_R 0x27
typedef struct dp_fan_status {
dp_handle_t handle;
rsci8 sensor_status; /* tells whether the reading is */
/* available or not */
rsci8 flag;
#define DP_FAN_PRESENCE 0x01 /* FAN presence (bit set=FAN present) */
#define DP_FAN_SPEED_VAL_UNIT 0x02 /* speed unit (bit set=relative, */
/* bit clear=RPM) */
#define DP_FAN_STATUS 0x04 /* FAN status (bit set=error) */
rsci16 speed; /* FAN speed. */
rsci16 minspeed; /* minimum FAN speed warning threshold */
} dp_fan_status_t;
typedef struct dp_get_fan_status_r {
rsci8 num_fans;
dp_fan_status_t fan_status[1];
} dp_get_fan_status_r_t;
#define DP_GET_PSU_STATUS 0x28
typedef struct dp_get_psu_status {
dp_handle_t handle; /* handle of a temperature sensor */
/* or <null handle> (0xffff) */
} dp_get_psu_status_t;
#define DP_GET_PSU_STATUS_R 0x29
typedef struct dp_psu_status {
dp_handle_t handle;
rsci8 sensor_status; /* tells whether the reading is */
/* available or not */
rsci16 mask; /* flag bit mask (feature presence) */
rsci16 flag; /* status bits */
#define DP_PSU_PRESENCE 0x0001 /* PSU presence */
#define DP_PSU_OUTPUT_STATUS 0x0002 /* output status */
#define DP_PSU_INPUT_STATUS 0x0004 /* input status */
#define DP_PSU_SEC_INPUT_STATUS 0x0008 /* secondary input status */
#define DP_PSU_OVERTEMP_FAULT 0x0010 /* over temperature fault */
#define DP_PSU_FAN_FAULT 0x0020 /* FAN fault */
#define DP_PSU_FAIL_STATUS 0x0040 /* PSU generic fault */
#define DP_PSU_OUTPUT_VLO_STATUS 0x0080 /* output under voltage */
#define DP_PSU_OUTPUT_VHI_STATUS 0x0100 /* output over voltage */
#define DP_PSU_OUTPUT_AHI_STATUS 0x0200 /* output over current */
#define DP_PSU_ALERT_STATUS 0x0400 /* PSU alert indication */
#define DP_PSU_PDCT_FAN 0x0800 /* predicted fan fail */
#define DP_PSU_NR_WARNING 0x1000 /* non-redundancy condition */
/* presence: bit clear=not present */
/* bit set=present */
/* status: bit clear=ok */
/* bit set=generic fault */
} dp_psu_status_t;
typedef struct dp_get_psu_status_r {
rsci8 num_psus;
dp_psu_status_t psu_status[1];
} dp_get_psu_status_r_t;
#define DP_GET_FRU_STATUS 0x2A
typedef struct dp_get_fru_status {
dp_handle_t handle; /* handle of a hot pluggable unit */
/* or <null handle> (0xffff) */
} dp_get_fru_status_t;
#define DP_GET_FRU_STATUS_R 0x2B
typedef struct dp_fru_status {
dp_handle_t handle;
rsci8 sensor_status; /* tells whether the reading is */
/* available or not */
rsci8 presence; /* 1=FRU present */
rsci8 status;
} dp_fru_status_t;
enum dp_fru_status_type {
DP_FRU_STATUS_OK = 1,
DP_FRU_STATUS_FAILED,
DP_FRU_STATUS_BLACKLISTED,
DP_FRU_STATUS_UNKNOWN
};
typedef struct dp_get_fru_status_r {
rsci8 num_frus;
dp_fru_status_t fru_status[1];
} dp_get_fru_status_r_t;
/*
* DP_GET_DEVICE(_R) command is used to discover I2C devices dynamically
* (used by SunVTS)
*/
#define DP_GET_DEVICE 0x2C
typedef struct dp_get_device {
dp_handle_t handle; /* handle of a device or */
/* <null handle>(0xffff) */
} dp_get_device_t;
#define DP_GET_DEVICE_R 0x2D
#define DP_MAX_DEVICE_TYPE_NAME 32
typedef struct dp_device {
dp_handle_t handle;
rsci8 presence; /* 0 is not present, 1 is present */
char device_type[DP_MAX_DEVICE_TYPE_NAME];
} dp_device_t;
typedef struct dp_get_device_r {
rsci8 num_devices;
dp_device_t device[1];
} dp_get_device_r_t;
#define DP_SET_CPU_SIGNATURE 0x33
typedef struct dp_set_cpu_signature {
int cpu_id; /* see PSARC 2000/205 for more */
ushort_t sig; /* information on the value/meaning */
uchar_t states; /* of these fields */
uchar_t sub_state;
} dp_cpu_signature_t;
#define DP_SET_CPU_NODENAME 0x38
#define DP_MAX_NODENAME 256
typedef struct dp_set_nodename {
char nodename[DP_MAX_NODENAME];
} dp_set_nodename_t;
#define DP_GET_LED_STATE 0x3C
typedef struct dp_get_led_state {
dp_handle_t handle; /* handle of a hot pluggable unit */
/* or <null handle> (0xffff) */
} dp_get_led_state_t;
#define DP_GET_LED_STATE_R 0x3D
typedef struct dp_led_state {
dp_handle_t handle;
rsci8 sensor_status; /* tells whether the reading is */
/* available or not */
rsci8 state;
rsci8 colour;
} dp_led_state_t;
typedef struct dp_get_led_state_r {
rsci8 num_leds;
dp_led_state_t led_state[1];
} dp_get_led_state_r_t;
/* LED states */
enum dp_led_states {
DP_LED_OFF = 0,
DP_LED_ON,
DP_LED_FLASHING,
DP_LED_BLINKING
};
enum dp_led_colours {
DP_LED_COLOUR_NONE = -1,
DP_LED_COLOUR_ANY,
DP_LED_COLOUR_WHITE,
DP_LED_COLOUR_BLUE,
DP_LED_COLOUR_GREEN,
DP_LED_COLOUR_AMBER
};
#define DP_SET_LED_STATE 0x3E
typedef struct dp_set_led_state {
dp_handle_t handle; /* handle of a LED */
rsci8 state;
} dp_set_led_state_t;
#define DP_SET_LED_STATE_R 0x3F
typedef struct dp_set_led_state_r {
rsci8 status;
} dp_set_led_state_r_t;
enum dp_set_led_status {
DP_SET_LED_OK = 0,
DP_SET_LED_INVALID_HANDLE,
DP_SET_LED_ERROR
};
#define DP_GET_ALARM_STATE 0x68
typedef struct dp_get_alarm_state {
dp_handle_t handle; /* handle of an alarm relay */
/* or <null handle> (0xffff) */
} dp_get_alarm_state_t;
#define DP_GET_ALARM_STATE_R 0x69
typedef struct dp_alarm_state {
dp_handle_t handle;
rsci8 sensor_status; /* tells whether the reading is */
/* available or not */
rsci8 state;
} dp_alarm_state_t;
typedef struct dp_get_alarm_state_r {
rsci8 num_alarms;
dp_alarm_state_t alarm_state[1];
} dp_get_alarm_state_r_t;
/* ALARM states */
enum dp_alarm_states {
DP_ALARM_OFF = 0,
DP_ALARM_ON
};
#define DP_SET_ALARM_STATE 0x6A
typedef struct dp_set_alarm_state {
dp_handle_t handle; /* handle of a ALARM */
rsci8 state;
} dp_set_alarm_state_t;
#define DP_SET_ALARM_STATE_R 0x6B
typedef struct dp_set_alarm_state_r {
rsci8 status;
} dp_set_alarm_state_r_t;
enum dp_set_alarm_status {
DP_SET_ALARM_OK = 0,
DP_SET_ALARM_INVALID_HANDLE,
DP_SET_ALARM_ERROR
};
#define DP_GET_VOLTS 0x42
typedef struct dp_get_volts {
dp_handle_t handle; /* handle of a voltage sensor */
} dp_get_volts_t;
#define DP_GET_VOLTS_R 0x43
typedef rscis16 dp_volt_reading_t; /* unit in mV */
typedef struct dp_volt_status {
dp_handle_t handle;
rsci8 sensor_status; /* tells whether the reading */
/* is available or not */
rsci8 status; /* 0=ok, 1=error */
dp_volt_reading_t reading; /* value in mV. */
dp_volt_reading_t low_warning;
dp_volt_reading_t low_soft_shutdown;
dp_volt_reading_t low_hard_shutdown;
dp_volt_reading_t high_warning;
dp_volt_reading_t high_soft_shutdown;
dp_volt_reading_t high_hard_shutdown;
} dp_volt_status_t;
typedef struct dp_get_volts_r {
rsci8 num_volts;
dp_volt_status_t volt_status[1];
} dp_get_volts_r_t;
#define DP_GET_CIRCUIT_BRKS 0x62
typedef struct dp_get_circuit_brks {
dp_handle_t handle; /* handle of a circuit breaker */
/* or <null handle> (0xffff) */
} dp_get_circuit_brks_t;
#define DP_GET_CIRCUIT_BRKS_R 0x63
typedef struct dp_circuit_brk_status {
dp_handle_t handle;
rsci8 sensor_status; /* tells whether the reading is */
/* available or not */
rsci8 status; /* 0=ok, 1=error */
} dp_circuit_brk_status_t;
typedef struct dp_get_circuit_brks_r {
rsci8 num_circuit_brks;
dp_circuit_brk_status_t circuit_brk_status[1];
} dp_get_circuit_brks_r_t;
#define DP_SET_HOST_WATCHDOG 0x48
typedef struct dp_set_host_watchdog {
rsci8 enable; /* 0=enable watchdog, 1=disable watchdog */
} dp_set_host_watchdog_t;
#define DP_GET_HANDLE_NAME 0x4A
typedef struct dp_get_handle_name {
dp_handle_t handle;
} dp_get_handle_name_t;
#define DP_GET_HANDLE_NAME_R 0x4B
typedef struct dp_get_handle_name_r {
dp_handle_t handle;
char name[DP_MAX_HANDLE_NAME];
} dp_get_handle_name_r_t;
#define DP_GET_HANDLE 0x4C
typedef struct dp_get_handle {
char name[DP_MAX_HANDLE_NAME];
} dp_get_handle_t;
#define DP_GET_HANDLE_R 0x4D
typedef struct dp_get_handle_r {
dp_handle_t handle;
} dp_get_handle_r_t;
#define DP_RMC_EVENTS 0x57
typedef rsci16 dp_event_t;
/*
* list of events
*/
enum rmc_events {
RMC_INIT_EVENT = 0x01,
RMC_HPU_EVENT,
RMC_ENV_EVENT,
RMC_KEYSWITCH_EVENT,
RMC_LOG_EVENT
};
/*
* event data structures
*/
enum rmc_hpu_events {
RMC_HPU_INSERT_EVENT = 0x20,
RMC_HPU_REMOVE_EVENT,
RMC_HPU_HWERROR_EVENT
};
typedef struct dp_hpu_event {
dp_handle_t hpu_hdl;
dp_event_t sub_event;
} dp_hpu_event_t;
enum rmc_env_events {
RMC_ENV_WARNING_THRESHOLD_EVENT = 0x31,
RMC_ENV_SHUTDOWN_THRESHOLD_EVENT,
RMC_ENV_FAULT_EVENT,
RMC_ENV_OK_EVENT
};
typedef struct dp_env_event {
dp_handle_t env_hdl;
dp_event_t sub_event;
} dp_env_event_t;
enum rmc_keyswitch_pos {
RMC_KEYSWITCH_POS_UNKNOWN = 0x00,
RMC_KEYSWITCH_POS_NORMAL,
RMC_KEYSWITCH_POS_DIAG,
RMC_KEYSWITCH_POS_LOCKED,
RMC_KEYSWITCH_POS_OFF
};
typedef struct dp_keyswitch_event {
rsci8 key_position;
} dp_keyswitch_event_t;
typedef struct dp_rmclog_event {
int log_record_size;
rsci8 log_record[DP_MAX_LOGSIZE];
} dp_rmclog_event_t;
typedef union dp_event_info {
dp_hpu_event_t ev_hpunot;
dp_env_event_t ev_envnot;
dp_keyswitch_event_t ev_keysw;
dp_rmclog_event_t ev_rmclog;
} dp_event_info_t;
typedef struct dp_event_notification {
dp_event_t event;
rsci32 event_seqno; /* event sequence number */
rsci32 timestamp; /* timestamp of the event */
dp_event_info_t event_info; /* event information */
} dp_event_notification_t;
#define DP_RMC_EVENTS_R 0x5F
typedef struct dp_event_notification_r {
rsci32 event_seqno; /* event sequence number */
} dp_event_notification_r_t;
#ifdef __cplusplus
}
#endif
#endif /* _SYS_RMC_COMM_HPROTO_H */