00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef _IPMI_SDR_H
00035 #define _IPMI_SDR_H
00036 #include <OpenIPMI/ipmi_types.h>
00037 #include <stdint.h>
00038
00039 #ifdef __cplusplus
00040 extern "C" {
00041 #endif
00042
00043 #define MAX_SDR_DATA 255
00044
00045
00046 typedef struct ipmi_sdr_s
00047 {
00048 uint16_t record_id;
00049 uint8_t major_version;
00050 uint8_t minor_version;
00051 uint8_t type;
00052 uint8_t length;
00053 uint8_t data[MAX_SDR_DATA];
00054 } ipmi_sdr_t;
00055
00056
00057 typedef struct ipmi_sdr_info_s ipmi_sdr_info_t;
00058
00059
00060
00061
00062
00063
00064 int ipmi_sdr_info_alloc(ipmi_domain_t *domain,
00065 ipmi_mc_t *mc,
00066 unsigned int lun,
00067 int sensor,
00068 ipmi_sdr_info_t **new_sdrs);
00069
00070
00071 void ipmi_sdr_clean_out_sdrs(ipmi_sdr_info_t *sdrs);
00072
00073
00074
00075
00076
00077 typedef void (*ipmi_sdr_destroyed_t)(ipmi_sdr_info_t *sdrs, void *cb_data);
00078 int ipmi_sdr_info_destroy(ipmi_sdr_info_t *sdrs,
00079 ipmi_sdr_destroyed_t handler,
00080 void *cb_data);
00081
00082
00083
00084
00085 typedef void (*ipmi_sdrs_fetched_t)(ipmi_sdr_info_t *sdrs,
00086 int err,
00087 int changed,
00088 unsigned int count,
00089 void *cb_data);
00090 int ipmi_sdr_fetch(ipmi_sdr_info_t *sdrs,
00091 ipmi_sdrs_fetched_t handler,
00092 void *cb_data);
00093
00094
00095 int ipmi_get_sdr_count(ipmi_sdr_info_t *sdr,
00096 unsigned int *count);
00097
00098
00099 int ipmi_get_sdr_by_recid(ipmi_sdr_info_t *sdr,
00100 int recid,
00101 ipmi_sdr_t *return_sdr);
00102
00103
00104 int ipmi_get_sdr_by_type(ipmi_sdr_info_t *sdr,
00105 int type,
00106 ipmi_sdr_t *return_sdr);
00107
00108
00109
00110
00111 int ipmi_get_sdr_by_index(ipmi_sdr_info_t *sdr,
00112 int index,
00113 ipmi_sdr_t *return_sdr);
00114
00115
00116
00117 int ipmi_set_sdr_by_index(ipmi_sdr_info_t *sdrs,
00118 int index,
00119 ipmi_sdr_t *sdr);
00120
00121
00122
00123
00124
00125
00126 int ipmi_get_all_sdrs(ipmi_sdr_info_t *sdr,
00127 int *array_size,
00128 ipmi_sdr_t *array);
00129
00130
00131 int ipmi_sdr_get_major_version(ipmi_sdr_info_t *sdr, int *val);
00132 int ipmi_sdr_get_minor_version(ipmi_sdr_info_t *sdr, int *val);
00133 int ipmi_sdr_get_overflow(ipmi_sdr_info_t *sdr, int *val);
00134 int ipmi_sdr_get_update_mode(ipmi_sdr_info_t *sdr, int *val);
00135 int ipmi_sdr_get_supports_delete_sdr(ipmi_sdr_info_t *sdr, int *val);
00136 int ipmi_sdr_get_supports_partial_add_sdr(ipmi_sdr_info_t *sdr, int *val);
00137 int ipmi_sdr_get_supports_reserve_sdr(ipmi_sdr_info_t *sdr, int *val);
00138 int ipmi_sdr_get_supports_get_sdr_repository_allocation(ipmi_sdr_info_t *sdr,
00139 int *val);
00140 int ipmi_sdr_get_dynamic_population(ipmi_sdr_info_t *sdr, int *val);
00141 int ipmi_sdr_get_lun_has_sensors(ipmi_sdr_info_t *sdr,
00142 unsigned int lun,
00143 int *val);
00144
00145
00146 int ipmi_sdr_add(ipmi_sdr_info_t *sdrs,
00147 ipmi_sdr_t *sdr);
00148
00149
00150 typedef void (*ipmi_sdr_save_cb)(ipmi_sdr_info_t *sdrs, int err, void *cb_data);
00151 int ipmi_sdr_save(ipmi_sdr_info_t *sdrs,
00152 ipmi_sdr_save_cb done,
00153 void *cb_data);
00154
00155 #ifdef __cplusplus
00156 }
00157 #endif
00158
00159 #endif