1 /* 2 * Copyright (C) 2003-2015 FreeIPMI Core Team 3 * 4 * This program is free software: you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation, either version 3 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program. If not, see <http://www.gnu.org/licenses/>. 16 * 17 */ 18 19 #ifndef IPMI_SDR_RECORD_FORMAT_H 20 #define IPMI_SDR_RECORD_FORMAT_H 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 #include <freeipmi/fiid/fiid.h> 27 28 #define IPMI_SDR_FORMAT_FULL_SENSOR_RECORD 0x01 29 #define IPMI_SDR_FORMAT_COMPACT_SENSOR_RECORD 0x02 30 #define IPMI_SDR_FORMAT_EVENT_ONLY_RECORD 0x03 31 #define IPMI_SDR_FORMAT_ENTITY_ASSOCIATION_RECORD 0x08 32 #define IPMI_SDR_FORMAT_DEVICE_RELATIVE_ENTITY_ASSOCIATION_RECORD 0x09 33 #define IPMI_SDR_FORMAT_GENERIC_DEVICE_LOCATOR_RECORD 0x10 34 #define IPMI_SDR_FORMAT_FRU_DEVICE_LOCATOR_RECORD 0x11 35 #define IPMI_SDR_FORMAT_MANAGEMENT_CONTROLLER_DEVICE_LOCATOR_RECORD 0x12 36 #define IPMI_SDR_FORMAT_MANAGEMENT_CONTROLLER_CONFIRMATION_RECORD 0x13 37 #define IPMI_SDR_FORMAT_BMC_MESSAGE_CHANNEL_INFO_RECORD 0x14 38 #define IPMI_SDR_FORMAT_OEM_RECORD 0xC0 39 40 #define IPMI_SDR_FORMAT_TYPE_VALID(__val) \ 41 (((__val) == IPMI_SDR_FORMAT_FULL_SENSOR_RECORD \ 42 || (__val) == IPMI_SDR_FORMAT_COMPACT_SENSOR_RECORD \ 43 || (__val) == IPMI_SDR_FORMAT_EVENT_ONLY_RECORD \ 44 || (__val) == IPMI_SDR_FORMAT_ENTITY_ASSOCIATION_RECORD \ 45 || (__val) == IPMI_SDR_FORMAT_DEVICE_RELATIVE_ENTITY_ASSOCIATION_RECORD \ 46 || (__val) == IPMI_SDR_FORMAT_GENERIC_DEVICE_LOCATOR_RECORD \ 47 || (__val) == IPMI_SDR_FORMAT_FRU_DEVICE_LOCATOR_RECORD \ 48 || (__val) == IPMI_SDR_FORMAT_MANAGEMENT_CONTROLLER_DEVICE_LOCATOR_RECORD \ 49 || (__val) == IPMI_SDR_FORMAT_MANAGEMENT_CONTROLLER_CONFIRMATION_RECORD \ 50 || (__val) == IPMI_SDR_FORMAT_BMC_MESSAGE_CHANNEL_INFO_RECORD \ 51 || (__val) == IPMI_SDR_FORMAT_OEM_RECORD) ? 1 : 0) 52 53 #define IPMI_SDR_SENSOR_OWNER_ID_TYPE_IPMB_SLAVE_ADDRESS 0x0 54 #define IPMI_SDR_SENSOR_OWNER_ID_TYPE_SYSTEM_SOFTWARE_ID 0x1 55 56 #define IPMI_SDR_ANALOG_DATA_FORMAT_UNSIGNED 0x0 57 #define IPMI_SDR_ANALOG_DATA_FORMAT_1S_COMPLEMENT 0x1 58 #define IPMI_SDR_ANALOG_DATA_FORMAT_2S_COMPLEMENT 0x2 59 #define IPMI_SDR_ANALOG_DATA_FORMAT_NOT_ANALOG 0x3 60 61 #define IPMI_SDR_ANALOG_DATA_FORMAT_UNSIGNED_STRING "unsigned" 62 #define IPMI_SDR_ANALOG_DATA_FORMAT_1S_COMPLEMENT_STRING "1's complement (signed)" 63 #define IPMI_SDR_ANALOG_DATA_FORMAT_2S_COMPLEMENT_STRING "2's complement (signed)" 64 #define IPMI_SDR_ANALOG_DATA_FORMAT_NOT_ANALOG_STRING "Does not return analog (numeric) reading" 65 66 #define IPMI_SDR_ANALOG_DATA_FORMAT_VALID(__val) \ 67 (((__val) == IPMI_SDR_ANALOG_DATA_FORMAT_UNSIGNED \ 68 || (__val) == IPMI_SDR_ANALOG_DATA_FORMAT_1S_COMPLEMENT \ 69 || (__val) == IPMI_SDR_ANALOG_DATA_FORMAT_2S_COMPLEMENT) ? 1 : 0) 70 71 #define IPMI_SDR_MODIFIER_UNIT_NONE 0 72 #define IPMI_SDR_MODIFIER_UNIT_DIVIDE 1 73 #define IPMI_SDR_MODIFIER_UNIT_MULTIPLY 2 74 75 #define IPMI_SDR_MODIFIER_UNIT_VALID(__sensor_modifier_unit) \ 76 (((__sensor_modifier_unit) == IPMI_SDR_MODIFIER_UNIT_NONE \ 77 || (__sensor_modifier_unit) == IPMI_SDR_MODIFIER_UNIT_DIVIDE \ 78 || (__sensor_modifier_unit) == IPMI_SDR_MODIFIER_UNIT_MULTIPLY) ? 1 : 0) 79 80 #define IPMI_SDR_LINEARIZATION_LINEAR 0 81 #define IPMI_SDR_LINEARIZATION_LN 1 82 #define IPMI_SDR_LINEARIZATION_LOG10 2 83 #define IPMI_SDR_LINEARIZATION_LOG2 3 84 #define IPMI_SDR_LINEARIZATION_E 4 85 #define IPMI_SDR_LINEARIZATION_EXP10 5 86 #define IPMI_SDR_LINEARIZATION_EXP2 6 87 #define IPMI_SDR_LINEARIZATION_INVERSE 7 88 #define IPMI_SDR_LINEARIZATION_SQR 8 89 #define IPMI_SDR_LINEARIZATION_CUBE 9 90 #define IPMI_SDR_LINEARIZATION_SQRT 10 91 #define IPMI_SDR_LINEARIZATION_CUBERT 11 92 #define IPMI_SDR_LINEARIZATION_NON_LINEAR 0x70 93 #define IPMI_SDR_LINEARIZATION_NON_LINEAR_OEM_MIN 0x71 94 #define IPMI_SDR_LINEARIZATION_NON_LINEAR_OEM_MAX 0x7F 95 96 #define IPMI_SDR_LINEARIZATION_LINEAR_STRING "linear" 97 #define IPMI_SDR_LINEARIZATION_LN_STRING "ln" 98 #define IPMI_SDR_LINEARIZATION_LOG10_STRING "log10" 99 #define IPMI_SDR_LINEARIZATION_LOG2_STRING "log2" 100 #define IPMI_SDR_LINEARIZATION_E_STRING "e" 101 #define IPMI_SDR_LINEARIZATION_EXP10_STRING "exp10" 102 #define IPMI_SDR_LINEARIZATION_EXP2_STRING "exp2" 103 #define IPMI_SDR_LINEARIZATION_INVERSE_STRING "1/x" 104 #define IPMI_SDR_LINEARIZATION_SQR_STRING "sqr(x)" 105 #define IPMI_SDR_LINEARIZATION_CUBE_STRING "cube(x)" 106 #define IPMI_SDR_LINEARIZATION_SQRT_STRING "sqrt(x)" 107 #define IPMI_SDR_LINEARIZATION_CUBERT_STRING "cube^-1(x)" 108 #define IPMI_SDR_LINEARIZATION_NON_LINEAR_STRING "non-linear" 109 110 /* To avoid gcc warnings, add +1 in comparison */ 111 #define IPMI_SDR_LINEARIZATION_IS_LINEAR(__sensor_linearization) \ 112 ((((__sensor_linearization) + 1) >= IPMI_SDR_LINEARIZATION_LN \ 113 && (__sensor_linearization) <= IPMI_SDR_LINEARIZATION_CUBERT) ? 1 : 0) 114 115 #define IPMI_SDR_LINEARIZATION_IS_NON_LINEAR(__sensor_linearization) \ 116 (((__sensor_linearization) >= IPMI_SDR_LINEARIZATION_NON_LINEAR \ 117 && (__sensor_linearization) <=IPMI_SDR_LINEARIZATION_NON_LINEAR_OEM_MAX) ? 1 : 0) 118 119 #define IPMI_SDR_PERCENTAGE_NO 0 120 #define IPMI_SDR_PERCENTAGE_YES 1 121 122 #define IPMI_SDR_PERCENTAGE_VALID(__val) \ 123 (((__val) == IPMI_SDR_PERCENTAGE_NO \ 124 || (__val) == IPMI_SDR_PERCENTAGE_YES) ? 1 : 0) 125 126 #define IPMI_SDR_PHYSICAL_ENTITY 0x0 127 #define IPMI_SDR_LOGICAL_CONTAINER_ENTITY 0x1 128 129 #define IPMI_SDR_SENSOR_SCANNING_ENABLED 0x1 130 #define IPMI_SDR_SENSOR_SCANNING_DISABLED 0x0 131 132 #define IPMI_SDR_EVENT_GENERATION_ENABLED 0x1 133 #define IPMI_SDR_EVENT_GENERATION_DISABLED 0x0 134 135 #define IPMI_SDR_SENSOR_AUTO_REARM_SUPPORT_MANUAL 0x0 136 #define IPMI_SDR_SENSOR_AUTO_REARM_SUPPORT_AUTO 0x1 137 138 #define IPMI_SDR_PER_EVENT_ENABLE_DISABLE_SUPPORT 0x0 139 #define IPMI_SDR_ENTIRE_SENSOR_ONLY 0x1 140 #define IPMI_SDR_GLOBAL_DISABLE_ONLY 0x2 141 #define IPMI_SDR_NO_EVENTS_FROM_SENSOR 0x3 142 143 #define IPMI_SDR_NO_THRESHOLDS_SUPPORT 0x0 144 #define IPMI_SDR_READABLE_THRESHOLDS_SUPPORT 0x1 145 #define IPMI_SDR_READABLE_SETTABLE_THRESHOLDS_SUPPORT 0x2 146 #define IPMI_SDR_FIXED_UNREADABLE_THRESHOLDS_SUPPORT 0x3 147 148 #define IPMI_SDR_NO_HYSTERESIS_SUPPORT 0x0 149 #define IPMI_SDR_READABLE_HYSTERESIS_SUPPORT 0x1 150 #define IPMI_SDR_READABLE_SETTABLE_HYSTERESIS_SUPPORT 0x2 151 #define IPMI_SDR_FIXED_UNREADABLE_HYSTERESIS_SUPPORT 0x3 152 153 #define IPMI_SDR_ANALOG_CHARACTERISTICS_NOMINAL_READING_SPECIFIED 0x1 154 #define IPMI_SDR_ANALOG_CHARACTERISTICS_NOMINAL_READING_UNSPECIFIED 0x0 155 156 #define IPMI_SDR_ANALOG_CHARACTERISTICS_NORMAL_MAX_SPECIFIED 0x1 157 #define IPMI_SDR_ANALOG_CHARACTERISTICS_NORMAL_MAX_UNSPECIFIED 0x0 158 159 #define IPMI_SDR_ANALOG_CHARACTERISTICS_NORMAL_MIN_SPECIFIED 0x1 160 #define IPMI_SDR_ANALOG_CHARACTERISTICS_NORMAL_MIN_UNSPECIFIED 0x0 161 162 #define IPMI_SDR_ID_STRING_INSTANCE_MODIFIER_TYPE_NUMERIC 0x0 163 #define IPMI_SDR_ID_STRING_INSTANCE_MODIFIER_TYPE_ALPHA 0x1 164 165 #define IPMI_SDR_SENSOR_DIRECTION_UNSPECIFIED 0x0 166 #define IPMI_SDR_SENSOR_DIRECTION_INPUT 0x1 167 #define IPMI_SDR_SENSOR_DIRECTION_OUTPUT 0x2 168 #define IPMI_SDR_SENSOR_DIRECTION_RESERVED 0x3 169 170 #define IPMI_SDR_ENTITY_INSTANCE_SAME_FOR_ALL_SHARED_RECORDS 0x0 171 #define IPMI_SDR_ENTITY_INSTANCE_INCREMENTS_FOR_EACH_SHARED_RECORD 0x1 172 173 #define IPMI_SDR_RECORD_NO_LINKED_ENTITY_ASSOCIATION_RECORDS_EXIST 0x0 174 #define IPMI_SDR_RECORD_LINKED_ENTITY_ASSOCIATION_RECORDS_EXIST 0x1 175 176 #define IPMI_SDR_CONTAINED_ENTITY_SPECIFIED_AS_LIST 0x0 177 #define IPMI_SDR_CONTAINED_ENTITY_SPECIFIED_AS_RANGE 0x1 178 179 #define IPMI_SDR_DEVICE_IS_NOT_A_LOGICAL_FRU_DEVICE 0x0 180 #define IPMI_SDR_DEVICE_IS_LOGICAL_FRU_DEVICE 0x1 181 182 #define IPMI_SDR_EVENT_MESSAGE_GENERATION_FROM_CONTROLLER_ENABLE 0x0 183 #define IPMI_SDR_EVENT_MESSAGE_GENERATION_FROM_CONTROLLER_DISABLE 0x1 184 #define IPMI_SDR_EVENT_MESSAGE_GENERATION_DO_NOT_INITIALIZE_CONTROLLER 0x2 185 #define IPMI_SDR_EVENT_MESSAGE_GENERATION_RESERVED 0x3 186 187 #define IPMI_SDR_LOG_INITIALIZATION_AGENT_ERRORS_ENABLE 0x0 188 #define IPMI_SDR_LOG_INITIALIZATION_AGENT_ERRORS_DISABLE 0x1 189 190 #define IPMI_SDR_CONTROLLER_LOGS_INITIALIZATION_AGENT_ERRORS_ENABLE 0x0 191 #define IPMI_SDR_CONTROLLER_LOGS_INITIALIZATION_AGENT_ERRORS_DISABLE 0x1 192 193 #define IPMI_SDR_CONTROLLER_DYNAMIC 0x0 194 #define IPMI_SDR_CONTROLLER_STATIC 0x1 195 196 #define IPMI_SDR_ACPI_DEVICE_POWER_STATE_NOTIFICATION_REQUIRED 0x0 197 #define IPMI_SDR_NO_ACPI_DEVICE_POWER_STATE_NOTIFICATION_REQUIRED 0x1 198 199 #define IPMI_SDR_ACPI_SYSTEM_POWER_STATE_NOTIFICATION_REQUIRED 0x0 200 #define IPMI_SDR_NO_ACPI_SYSTEM_POWER_STATE_NOTIFICATION_REQUIRED 0x1 201 202 #define IPMI_SDR_MAX_ID_STRING_LENGTH 16 203 #define IPMI_SDR_MAX_DEVICE_ID_STRING_LENGTH 16 204 205 /* 206 * see freeipmi/templates/ for template definitions 207 */ 208 209 extern fiid_template_t tmpl_sdr_record_header; 210 extern fiid_template_t tmpl_sdr_full_sensor_record; 211 extern fiid_template_t tmpl_sdr_full_sensor_record_non_threshold_based_sensors; 212 extern fiid_template_t tmpl_sdr_full_sensor_record_threshold_based_sensors; 213 extern fiid_template_t tmpl_sdr_compact_sensor_record; 214 extern fiid_template_t tmpl_sdr_compact_sensor_record_non_threshold_based_sensors; 215 extern fiid_template_t tmpl_sdr_compact_sensor_record_threshold_based_sensors; 216 extern fiid_template_t tmpl_sdr_event_only_record; 217 extern fiid_template_t tmpl_sdr_entity_association_record; 218 extern fiid_template_t tmpl_sdr_device_relative_entity_association_record; 219 extern fiid_template_t tmpl_sdr_generic_device_locator_record; 220 extern fiid_template_t tmpl_sdr_fru_device_locator_record; 221 extern fiid_template_t tmpl_sdr_fru_device_locator_record_non_intelligent; 222 extern fiid_template_t tmpl_sdr_management_controller_device_locator_record; 223 extern fiid_template_t tmpl_sdr_management_controller_confirmation_record; 224 extern fiid_template_t tmpl_sdr_bmc_message_channel_info_record; 225 extern fiid_template_t tmpl_sdr_oem_record; 226 227 #ifdef __cplusplus 228 } 229 #endif 230 231 #endif /* IPMI_SDR_RECORD_FORMAT_H */ 232