# ipmi-sensors --debug ===================================================== Get SDR Repository Info Request ===================================================== [ 20h] = cmd[ 8b] ===================================================== Get SDR Repository Info Response ===================================================== [ 20h] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1Eh] = record_count[16b] [ FFFFh] = free_space[16b] [ FFFFFFFFh] = most_recent_addition_timestamp[32b] [ FFFFFFFFh] = most_recent_erase_timestamp[32b] [ 0h] = get_sdr_repository_allocation_info_command_supported[ 1b] [ 1h] = reserve_sdr_repository_command_supported[ 1b] [ 0h] = partial_add_sdr_command_supported[ 1b] [ 1h] = delete_sdr_command_supported[ 1b] [ 0h] = reserved[ 1b] [ 0h] = modal_non_modal_sdr_repository_update_operation_supported[ 2b] [ 0h] = overflow_flag[ 1b] ===================================================== SDR OEM Record ===================================================== [ 0h] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ C0h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 103Ch] = manufacturer_id[24b] [ BYTE ARRAY ... ] = oem_data[56B] [ 02h 00h 01h 02h 00h 0Fh 00h 00h ] [ 00h 00h 44h 4Ch 35h 38h 35h 20h ] [ 47h 32h 20h 76h 31h 2Eh 32h 00h ] [ 00h 00h 00h 00h 00h 00h 00h 00h ] [ 00h 00h 00h 00h 00h 00h 00h 00h ] [ 00h 00h 00h 00h 00h 00h 00h 00h ] [ 00h 00h 00h 00h 00h 00h 00h 00h ] ===================================================== SDR Full Sensor Record ===================================================== [ 1h] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ 1h] = sensor_number[ 8b] [ 17h] = entity_id[ 8b] [ 1h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 0h] = sensor_initialization.sensor_scanning[ 1b] [ 0h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 0h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 3h] = sensor_capabilities.event_message_control_support[ 2b] [ 0h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 0h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 0h] = sensor_capabilities.entity_ignore_support[ 1b] [ C0h] = sensor_type[ 8b] [ 70h] = event_reading_type_code[ 8b] [ 0h] = assertion_event_lower_threshold_reading_mask[16b] [ 0h] = deassertion_event_upper_threshold_reading_mask[16b] [ 7h] = discrete_reading_settable_threshold_readable_threshold_mask[16b] [ 0h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 0h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 0h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 0h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ 0h] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ 0h] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] [ 0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 0h] = oem[ 8b] [ C9h] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 55h 49h 44h 20h 4Ch 69h 67h 68h ] [ 74h 00h 00h 00h 00h 00h 00h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ 1h] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 0h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 0h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] 1: UID Light (OEM Reserved): [OEM State = 0000h] ===================================================== SDR Full Sensor Record ===================================================== [ 2h] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ 2h] = sensor_number[ 8b] [ 17h] = entity_id[ 8b] [ 2h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 0h] = sensor_initialization.sensor_scanning[ 1b] [ 0h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 0h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 3h] = sensor_capabilities.event_message_control_support[ 2b] [ 0h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 0h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 0h] = sensor_capabilities.entity_ignore_support[ 1b] [ C0h] = sensor_type[ 8b] [ 71h] = event_reading_type_code[ 8b] [ 0h] = assertion_event_lower_threshold_reading_mask[16b] [ 0h] = deassertion_event_upper_threshold_reading_mask[16b] [ 7h] = discrete_reading_settable_threshold_readable_threshold_mask[16b] [ 0h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 0h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 0h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 0h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ 0h] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ 0h] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] [ 0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 0h] = oem[ 8b] [ CFh] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 49h 6Eh 74h 2Eh 20h 48h 65h 61h ] [ 6Ch 74h 68h 20h 4Ch 45h 44h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ 2h] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 0h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 0h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] 2: Int. Health LED (OEM Reserved): [OEM State = 0000h] ===================================================== SDR Full Sensor Record ===================================================== [ 3h] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ 3h] = sensor_number[ 8b] [ 17h] = entity_id[ 8b] [ 3h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 0h] = sensor_initialization.sensor_scanning[ 1b] [ 0h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 0h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 3h] = sensor_capabilities.event_message_control_support[ 2b] [ 0h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 0h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 0h] = sensor_capabilities.entity_ignore_support[ 1b] [ C0h] = sensor_type[ 8b] [ 71h] = event_reading_type_code[ 8b] [ 0h] = assertion_event_lower_threshold_reading_mask[16b] [ 0h] = deassertion_event_upper_threshold_reading_mask[16b] [ 7h] = discrete_reading_settable_threshold_readable_threshold_mask[16b] [ 0h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 0h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 0h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 0h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ 0h] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ 0h] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] [ 0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 0h] = oem[ 8b] [ CFh] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 45h 78h 74h 2Eh 20h 48h 65h 61h ] [ 6Ch 74h 68h 20h 4Ch 45h 44h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ 3h] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 0h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 0h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] 3: Ext. Health LED (OEM Reserved): [OEM State = 0000h] ===================================================== SDR Full Sensor Record ===================================================== [ 4h] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ 4h] = sensor_number[ 8b] [ 9h] = entity_id[ 8b] [ 1h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 0h] = sensor_initialization.sensor_scanning[ 1b] [ 1h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 1h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 1h] = sensor_capabilities.event_message_control_support[ 2b] [ 0h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 1h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 1h] = sensor_capabilities.entity_ignore_support[ 1b] [ 9h] = sensor_type[ 8b] [ 8h] = event_reading_type_code[ 8b] [ 1h] = assertion_event_mask.event_offset_0[ 1b] [ 0h] = assertion_event_mask.event_offset_1[ 1b] [ 0h] = assertion_event_mask.event_offset_2[ 1b] [ 0h] = assertion_event_mask.event_offset_3[ 1b] [ 0h] = assertion_event_mask.event_offset_4[ 1b] [ 0h] = assertion_event_mask.event_offset_5[ 1b] [ 0h] = assertion_event_mask.event_offset_6[ 1b] [ 0h] = assertion_event_mask.event_offset_7[ 1b] [ 0h] = assertion_event_mask.event_offset_8[ 1b] [ 0h] = assertion_event_mask.event_offset_9[ 1b] [ 0h] = assertion_event_mask.event_offset_10[ 1b] [ 0h] = assertion_event_mask.event_offset_11[ 1b] [ 0h] = assertion_event_mask.event_offset_12[ 1b] [ 0h] = assertion_event_mask.event_offset_13[ 1b] [ 0h] = assertion_event_mask.event_offset_14[ 1b] [ 0h] = assertion_event_mask.reserved[ 1b] [ 0h] = deassertion_event_mask.event_offset_0[ 1b] [ 0h] = deassertion_event_mask.event_offset_1[ 1b] [ 0h] = deassertion_event_mask.event_offset_2[ 1b] [ 0h] = deassertion_event_mask.event_offset_3[ 1b] [ 0h] = deassertion_event_mask.event_offset_4[ 1b] [ 0h] = deassertion_event_mask.event_offset_5[ 1b] [ 0h] = deassertion_event_mask.event_offset_6[ 1b] [ 0h] = deassertion_event_mask.event_offset_7[ 1b] [ 0h] = deassertion_event_mask.event_offset_8[ 1b] [ 0h] = deassertion_event_mask.event_offset_9[ 1b] [ 0h] = deassertion_event_mask.event_offset_10[ 1b] [ 0h] = deassertion_event_mask.event_offset_11[ 1b] [ 0h] = deassertion_event_mask.event_offset_12[ 1b] [ 0h] = deassertion_event_mask.event_offset_13[ 1b] [ 0h] = deassertion_event_mask.event_offset_14[ 1b] [ 0h] = deassertion_event_mask.reserved[ 1b] [ 1h] = discrete_reading_mask.state_bit_0[ 1b] [ 1h] = discrete_reading_mask.state_bit_1[ 1b] [ 0h] = discrete_reading_mask.state_bit_2[ 1b] [ 0h] = discrete_reading_mask.state_bit_3[ 1b] [ 0h] = discrete_reading_mask.state_bit_4[ 1b] [ 0h] = discrete_reading_mask.state_bit_5[ 1b] [ 0h] = discrete_reading_mask.state_bit_6[ 1b] [ 0h] = discrete_reading_mask.state_bit_7[ 1b] [ 0h] = discrete_reading_mask.state_bit_8[ 1b] [ 0h] = discrete_reading_mask.state_bit_9[ 1b] [ 0h] = discrete_reading_mask.state_bit_10[ 1b] [ 0h] = discrete_reading_mask.state_bit_11[ 1b] [ 0h] = discrete_reading_mask.state_bit_12[ 1b] [ 0h] = discrete_reading_mask.state_bit_13[ 1b] [ 0h] = discrete_reading_mask.state_bit_14[ 1b] [ 0h] = discrete_reading_mask.reserved[ 1b] [ 0h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 0h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 0h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 0h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ 0h] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ 0h] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] [ 0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 1h] = oem[ 8b] [ C5h] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 56h 52h 4Dh 20h 31h 00h 00h 00h ] [ 00h 00h 00h 00h 00h 00h 00h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ 4h] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 0h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 2h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] 4: VRM 1 (Power Unit): [Device Inserted/Device Present] ===================================================== SDR Full Sensor Record ===================================================== [ 5h] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ 5h] = sensor_number[ 8b] [ 9h] = entity_id[ 8b] [ 2h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 0h] = sensor_initialization.sensor_scanning[ 1b] [ 1h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 1h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 1h] = sensor_capabilities.event_message_control_support[ 2b] [ 0h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 1h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 1h] = sensor_capabilities.entity_ignore_support[ 1b] [ 9h] = sensor_type[ 8b] [ 8h] = event_reading_type_code[ 8b] [ 1h] = assertion_event_mask.event_offset_0[ 1b] [ 0h] = assertion_event_mask.event_offset_1[ 1b] [ 0h] = assertion_event_mask.event_offset_2[ 1b] [ 0h] = assertion_event_mask.event_offset_3[ 1b] [ 0h] = assertion_event_mask.event_offset_4[ 1b] [ 0h] = assertion_event_mask.event_offset_5[ 1b] [ 0h] = assertion_event_mask.event_offset_6[ 1b] [ 0h] = assertion_event_mask.event_offset_7[ 1b] [ 0h] = assertion_event_mask.event_offset_8[ 1b] [ 0h] = assertion_event_mask.event_offset_9[ 1b] [ 0h] = assertion_event_mask.event_offset_10[ 1b] [ 0h] = assertion_event_mask.event_offset_11[ 1b] [ 0h] = assertion_event_mask.event_offset_12[ 1b] [ 0h] = assertion_event_mask.event_offset_13[ 1b] [ 0h] = assertion_event_mask.event_offset_14[ 1b] [ 0h] = assertion_event_mask.reserved[ 1b] [ 0h] = deassertion_event_mask.event_offset_0[ 1b] [ 0h] = deassertion_event_mask.event_offset_1[ 1b] [ 0h] = deassertion_event_mask.event_offset_2[ 1b] [ 0h] = deassertion_event_mask.event_offset_3[ 1b] [ 0h] = deassertion_event_mask.event_offset_4[ 1b] [ 0h] = deassertion_event_mask.event_offset_5[ 1b] [ 0h] = deassertion_event_mask.event_offset_6[ 1b] [ 0h] = deassertion_event_mask.event_offset_7[ 1b] [ 0h] = deassertion_event_mask.event_offset_8[ 1b] [ 0h] = deassertion_event_mask.event_offset_9[ 1b] [ 0h] = deassertion_event_mask.event_offset_10[ 1b] [ 0h] = deassertion_event_mask.event_offset_11[ 1b] [ 0h] = deassertion_event_mask.event_offset_12[ 1b] [ 0h] = deassertion_event_mask.event_offset_13[ 1b] [ 0h] = deassertion_event_mask.event_offset_14[ 1b] [ 0h] = deassertion_event_mask.reserved[ 1b] [ 1h] = discrete_reading_mask.state_bit_0[ 1b] [ 1h] = discrete_reading_mask.state_bit_1[ 1b] [ 0h] = discrete_reading_mask.state_bit_2[ 1b] [ 0h] = discrete_reading_mask.state_bit_3[ 1b] [ 0h] = discrete_reading_mask.state_bit_4[ 1b] [ 0h] = discrete_reading_mask.state_bit_5[ 1b] [ 0h] = discrete_reading_mask.state_bit_6[ 1b] [ 0h] = discrete_reading_mask.state_bit_7[ 1b] [ 0h] = discrete_reading_mask.state_bit_8[ 1b] [ 0h] = discrete_reading_mask.state_bit_9[ 1b] [ 0h] = discrete_reading_mask.state_bit_10[ 1b] [ 0h] = discrete_reading_mask.state_bit_11[ 1b] [ 0h] = discrete_reading_mask.state_bit_12[ 1b] [ 0h] = discrete_reading_mask.state_bit_13[ 1b] [ 0h] = discrete_reading_mask.state_bit_14[ 1b] [ 0h] = discrete_reading_mask.reserved[ 1b] [ 0h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 0h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 0h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 0h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ 0h] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ 0h] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] [ 0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 2h] = oem[ 8b] [ C5h] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 56h 52h 4Dh 20h 32h 00h 00h 00h ] [ 00h 00h 00h 00h 00h 00h 00h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ 5h] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 0h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 2h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] 5: VRM 2 (Power Unit): [Device Inserted/Device Present] ===================================================== SDR Full Sensor Record ===================================================== [ 6h] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ 6h] = sensor_number[ 8b] [ 9h] = entity_id[ 8b] [ 3h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 0h] = sensor_initialization.sensor_scanning[ 1b] [ 1h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 1h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 1h] = sensor_capabilities.event_message_control_support[ 2b] [ 0h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 1h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 1h] = sensor_capabilities.entity_ignore_support[ 1b] [ 9h] = sensor_type[ 8b] [ 8h] = event_reading_type_code[ 8b] [ 1h] = assertion_event_mask.event_offset_0[ 1b] [ 0h] = assertion_event_mask.event_offset_1[ 1b] [ 0h] = assertion_event_mask.event_offset_2[ 1b] [ 0h] = assertion_event_mask.event_offset_3[ 1b] [ 0h] = assertion_event_mask.event_offset_4[ 1b] [ 0h] = assertion_event_mask.event_offset_5[ 1b] [ 0h] = assertion_event_mask.event_offset_6[ 1b] [ 0h] = assertion_event_mask.event_offset_7[ 1b] [ 0h] = assertion_event_mask.event_offset_8[ 1b] [ 0h] = assertion_event_mask.event_offset_9[ 1b] [ 0h] = assertion_event_mask.event_offset_10[ 1b] [ 0h] = assertion_event_mask.event_offset_11[ 1b] [ 0h] = assertion_event_mask.event_offset_12[ 1b] [ 0h] = assertion_event_mask.event_offset_13[ 1b] [ 0h] = assertion_event_mask.event_offset_14[ 1b] [ 0h] = assertion_event_mask.reserved[ 1b] [ 0h] = deassertion_event_mask.event_offset_0[ 1b] [ 0h] = deassertion_event_mask.event_offset_1[ 1b] [ 0h] = deassertion_event_mask.event_offset_2[ 1b] [ 0h] = deassertion_event_mask.event_offset_3[ 1b] [ 0h] = deassertion_event_mask.event_offset_4[ 1b] [ 0h] = deassertion_event_mask.event_offset_5[ 1b] [ 0h] = deassertion_event_mask.event_offset_6[ 1b] [ 0h] = deassertion_event_mask.event_offset_7[ 1b] [ 0h] = deassertion_event_mask.event_offset_8[ 1b] [ 0h] = deassertion_event_mask.event_offset_9[ 1b] [ 0h] = deassertion_event_mask.event_offset_10[ 1b] [ 0h] = deassertion_event_mask.event_offset_11[ 1b] [ 0h] = deassertion_event_mask.event_offset_12[ 1b] [ 0h] = deassertion_event_mask.event_offset_13[ 1b] [ 0h] = deassertion_event_mask.event_offset_14[ 1b] [ 0h] = deassertion_event_mask.reserved[ 1b] [ 1h] = discrete_reading_mask.state_bit_0[ 1b] [ 1h] = discrete_reading_mask.state_bit_1[ 1b] [ 0h] = discrete_reading_mask.state_bit_2[ 1b] [ 0h] = discrete_reading_mask.state_bit_3[ 1b] [ 0h] = discrete_reading_mask.state_bit_4[ 1b] [ 0h] = discrete_reading_mask.state_bit_5[ 1b] [ 0h] = discrete_reading_mask.state_bit_6[ 1b] [ 0h] = discrete_reading_mask.state_bit_7[ 1b] [ 0h] = discrete_reading_mask.state_bit_8[ 1b] [ 0h] = discrete_reading_mask.state_bit_9[ 1b] [ 0h] = discrete_reading_mask.state_bit_10[ 1b] [ 0h] = discrete_reading_mask.state_bit_11[ 1b] [ 0h] = discrete_reading_mask.state_bit_12[ 1b] [ 0h] = discrete_reading_mask.state_bit_13[ 1b] [ 0h] = discrete_reading_mask.state_bit_14[ 1b] [ 0h] = discrete_reading_mask.reserved[ 1b] [ 0h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 0h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 0h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 0h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ 0h] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ 0h] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] [ 0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 3h] = oem[ 8b] [ C5h] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 56h 52h 4Dh 20h 33h 00h 00h 00h ] [ 00h 00h 00h 00h 00h 00h 00h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ 6h] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 0h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 2h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] 6: VRM 3 (Power Unit): [Device Inserted/Device Present] ===================================================== SDR Full Sensor Record ===================================================== [ 7h] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ 7h] = sensor_number[ 8b] [ 9h] = entity_id[ 8b] [ 4h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 0h] = sensor_initialization.sensor_scanning[ 1b] [ 1h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 1h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 1h] = sensor_capabilities.event_message_control_support[ 2b] [ 0h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 1h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 1h] = sensor_capabilities.entity_ignore_support[ 1b] [ 9h] = sensor_type[ 8b] [ 8h] = event_reading_type_code[ 8b] [ 1h] = assertion_event_mask.event_offset_0[ 1b] [ 0h] = assertion_event_mask.event_offset_1[ 1b] [ 0h] = assertion_event_mask.event_offset_2[ 1b] [ 0h] = assertion_event_mask.event_offset_3[ 1b] [ 0h] = assertion_event_mask.event_offset_4[ 1b] [ 0h] = assertion_event_mask.event_offset_5[ 1b] [ 0h] = assertion_event_mask.event_offset_6[ 1b] [ 0h] = assertion_event_mask.event_offset_7[ 1b] [ 0h] = assertion_event_mask.event_offset_8[ 1b] [ 0h] = assertion_event_mask.event_offset_9[ 1b] [ 0h] = assertion_event_mask.event_offset_10[ 1b] [ 0h] = assertion_event_mask.event_offset_11[ 1b] [ 0h] = assertion_event_mask.event_offset_12[ 1b] [ 0h] = assertion_event_mask.event_offset_13[ 1b] [ 0h] = assertion_event_mask.event_offset_14[ 1b] [ 0h] = assertion_event_mask.reserved[ 1b] [ 0h] = deassertion_event_mask.event_offset_0[ 1b] [ 0h] = deassertion_event_mask.event_offset_1[ 1b] [ 0h] = deassertion_event_mask.event_offset_2[ 1b] [ 0h] = deassertion_event_mask.event_offset_3[ 1b] [ 0h] = deassertion_event_mask.event_offset_4[ 1b] [ 0h] = deassertion_event_mask.event_offset_5[ 1b] [ 0h] = deassertion_event_mask.event_offset_6[ 1b] [ 0h] = deassertion_event_mask.event_offset_7[ 1b] [ 0h] = deassertion_event_mask.event_offset_8[ 1b] [ 0h] = deassertion_event_mask.event_offset_9[ 1b] [ 0h] = deassertion_event_mask.event_offset_10[ 1b] [ 0h] = deassertion_event_mask.event_offset_11[ 1b] [ 0h] = deassertion_event_mask.event_offset_12[ 1b] [ 0h] = deassertion_event_mask.event_offset_13[ 1b] [ 0h] = deassertion_event_mask.event_offset_14[ 1b] [ 0h] = deassertion_event_mask.reserved[ 1b] [ 1h] = discrete_reading_mask.state_bit_0[ 1b] [ 1h] = discrete_reading_mask.state_bit_1[ 1b] [ 0h] = discrete_reading_mask.state_bit_2[ 1b] [ 0h] = discrete_reading_mask.state_bit_3[ 1b] [ 0h] = discrete_reading_mask.state_bit_4[ 1b] [ 0h] = discrete_reading_mask.state_bit_5[ 1b] [ 0h] = discrete_reading_mask.state_bit_6[ 1b] [ 0h] = discrete_reading_mask.state_bit_7[ 1b] [ 0h] = discrete_reading_mask.state_bit_8[ 1b] [ 0h] = discrete_reading_mask.state_bit_9[ 1b] [ 0h] = discrete_reading_mask.state_bit_10[ 1b] [ 0h] = discrete_reading_mask.state_bit_11[ 1b] [ 0h] = discrete_reading_mask.state_bit_12[ 1b] [ 0h] = discrete_reading_mask.state_bit_13[ 1b] [ 0h] = discrete_reading_mask.state_bit_14[ 1b] [ 0h] = discrete_reading_mask.reserved[ 1b] [ 0h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 0h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 0h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 0h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ 0h] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ 0h] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] [ 0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 4h] = oem[ 8b] [ C5h] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 56h 52h 4Dh 20h 34h 00h 00h 00h ] [ 00h 00h 00h 00h 00h 00h 00h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ 7h] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 0h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 2h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] 7: VRM 4 (Power Unit): [Device Inserted/Device Present] ===================================================== SDR Full Sensor Record ===================================================== [ 8h] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ 8h] = sensor_number[ 8b] [ Ah] = entity_id[ 8b] [ 1h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 0h] = sensor_initialization.sensor_scanning[ 1b] [ 1h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 1h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 1h] = sensor_capabilities.event_message_control_support[ 2b] [ 0h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 1h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 1h] = sensor_capabilities.entity_ignore_support[ 1b] [ 8h] = sensor_type[ 8b] [ 6Fh] = event_reading_type_code[ 8b] [ 0h] = assertion_event_mask.event_offset_0[ 1b] [ 1h] = assertion_event_mask.event_offset_1[ 1b] [ 0h] = assertion_event_mask.event_offset_2[ 1b] [ 0h] = assertion_event_mask.event_offset_3[ 1b] [ 0h] = assertion_event_mask.event_offset_4[ 1b] [ 0h] = assertion_event_mask.event_offset_5[ 1b] [ 0h] = assertion_event_mask.event_offset_6[ 1b] [ 0h] = assertion_event_mask.event_offset_7[ 1b] [ 0h] = assertion_event_mask.event_offset_8[ 1b] [ 0h] = assertion_event_mask.event_offset_9[ 1b] [ 0h] = assertion_event_mask.event_offset_10[ 1b] [ 0h] = assertion_event_mask.event_offset_11[ 1b] [ 0h] = assertion_event_mask.event_offset_12[ 1b] [ 0h] = assertion_event_mask.event_offset_13[ 1b] [ 0h] = assertion_event_mask.event_offset_14[ 1b] [ 0h] = assertion_event_mask.reserved[ 1b] [ 1h] = deassertion_event_mask.event_offset_0[ 1b] [ 0h] = deassertion_event_mask.event_offset_1[ 1b] [ 0h] = deassertion_event_mask.event_offset_2[ 1b] [ 0h] = deassertion_event_mask.event_offset_3[ 1b] [ 0h] = deassertion_event_mask.event_offset_4[ 1b] [ 0h] = deassertion_event_mask.event_offset_5[ 1b] [ 0h] = deassertion_event_mask.event_offset_6[ 1b] [ 0h] = deassertion_event_mask.event_offset_7[ 1b] [ 0h] = deassertion_event_mask.event_offset_8[ 1b] [ 0h] = deassertion_event_mask.event_offset_9[ 1b] [ 0h] = deassertion_event_mask.event_offset_10[ 1b] [ 0h] = deassertion_event_mask.event_offset_11[ 1b] [ 0h] = deassertion_event_mask.event_offset_12[ 1b] [ 0h] = deassertion_event_mask.event_offset_13[ 1b] [ 0h] = deassertion_event_mask.event_offset_14[ 1b] [ 0h] = deassertion_event_mask.reserved[ 1b] [ 1h] = discrete_reading_mask.state_bit_0[ 1b] [ 1h] = discrete_reading_mask.state_bit_1[ 1b] [ 0h] = discrete_reading_mask.state_bit_2[ 1b] [ 0h] = discrete_reading_mask.state_bit_3[ 1b] [ 0h] = discrete_reading_mask.state_bit_4[ 1b] [ 0h] = discrete_reading_mask.state_bit_5[ 1b] [ 0h] = discrete_reading_mask.state_bit_6[ 1b] [ 0h] = discrete_reading_mask.state_bit_7[ 1b] [ 0h] = discrete_reading_mask.state_bit_8[ 1b] [ 0h] = discrete_reading_mask.state_bit_9[ 1b] [ 0h] = discrete_reading_mask.state_bit_10[ 1b] [ 0h] = discrete_reading_mask.state_bit_11[ 1b] [ 0h] = discrete_reading_mask.state_bit_12[ 1b] [ 0h] = discrete_reading_mask.state_bit_13[ 1b] [ 0h] = discrete_reading_mask.state_bit_14[ 1b] [ 0h] = discrete_reading_mask.reserved[ 1b] [ 0h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 0h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 0h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 0h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ 0h] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ 0h] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] [ 0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 1h] = oem[ 8b] [ CEh] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 50h 6Fh 77h 65h 72h 20h 53h 75h ] [ 70h 70h 6Ch 79h 20h 31h 00h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ 8h] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 0h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 1h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] 8: Power Supply 1 (Power Supply): [Presence detected] ===================================================== SDR Full Sensor Record ===================================================== [ 9h] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ 9h] = sensor_number[ 8b] [ Ah] = entity_id[ 8b] [ 2h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 0h] = sensor_initialization.sensor_scanning[ 1b] [ 1h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 1h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 1h] = sensor_capabilities.event_message_control_support[ 2b] [ 0h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 1h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 1h] = sensor_capabilities.entity_ignore_support[ 1b] [ 8h] = sensor_type[ 8b] [ 6Fh] = event_reading_type_code[ 8b] [ 0h] = assertion_event_mask.event_offset_0[ 1b] [ 1h] = assertion_event_mask.event_offset_1[ 1b] [ 0h] = assertion_event_mask.event_offset_2[ 1b] [ 0h] = assertion_event_mask.event_offset_3[ 1b] [ 0h] = assertion_event_mask.event_offset_4[ 1b] [ 0h] = assertion_event_mask.event_offset_5[ 1b] [ 0h] = assertion_event_mask.event_offset_6[ 1b] [ 0h] = assertion_event_mask.event_offset_7[ 1b] [ 0h] = assertion_event_mask.event_offset_8[ 1b] [ 0h] = assertion_event_mask.event_offset_9[ 1b] [ 0h] = assertion_event_mask.event_offset_10[ 1b] [ 0h] = assertion_event_mask.event_offset_11[ 1b] [ 0h] = assertion_event_mask.event_offset_12[ 1b] [ 0h] = assertion_event_mask.event_offset_13[ 1b] [ 0h] = assertion_event_mask.event_offset_14[ 1b] [ 0h] = assertion_event_mask.reserved[ 1b] [ 1h] = deassertion_event_mask.event_offset_0[ 1b] [ 0h] = deassertion_event_mask.event_offset_1[ 1b] [ 0h] = deassertion_event_mask.event_offset_2[ 1b] [ 0h] = deassertion_event_mask.event_offset_3[ 1b] [ 0h] = deassertion_event_mask.event_offset_4[ 1b] [ 0h] = deassertion_event_mask.event_offset_5[ 1b] [ 0h] = deassertion_event_mask.event_offset_6[ 1b] [ 0h] = deassertion_event_mask.event_offset_7[ 1b] [ 0h] = deassertion_event_mask.event_offset_8[ 1b] [ 0h] = deassertion_event_mask.event_offset_9[ 1b] [ 0h] = deassertion_event_mask.event_offset_10[ 1b] [ 0h] = deassertion_event_mask.event_offset_11[ 1b] [ 0h] = deassertion_event_mask.event_offset_12[ 1b] [ 0h] = deassertion_event_mask.event_offset_13[ 1b] [ 0h] = deassertion_event_mask.event_offset_14[ 1b] [ 0h] = deassertion_event_mask.reserved[ 1b] [ 1h] = discrete_reading_mask.state_bit_0[ 1b] [ 1h] = discrete_reading_mask.state_bit_1[ 1b] [ 0h] = discrete_reading_mask.state_bit_2[ 1b] [ 0h] = discrete_reading_mask.state_bit_3[ 1b] [ 0h] = discrete_reading_mask.state_bit_4[ 1b] [ 0h] = discrete_reading_mask.state_bit_5[ 1b] [ 0h] = discrete_reading_mask.state_bit_6[ 1b] [ 0h] = discrete_reading_mask.state_bit_7[ 1b] [ 0h] = discrete_reading_mask.state_bit_8[ 1b] [ 0h] = discrete_reading_mask.state_bit_9[ 1b] [ 0h] = discrete_reading_mask.state_bit_10[ 1b] [ 0h] = discrete_reading_mask.state_bit_11[ 1b] [ 0h] = discrete_reading_mask.state_bit_12[ 1b] [ 0h] = discrete_reading_mask.state_bit_13[ 1b] [ 0h] = discrete_reading_mask.state_bit_14[ 1b] [ 0h] = discrete_reading_mask.reserved[ 1b] [ 0h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 0h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 0h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 0h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ 0h] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ 0h] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] [ 0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 2h] = oem[ 8b] [ CEh] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 50h 6Fh 77h 65h 72h 20h 53h 75h ] [ 70h 70h 6Ch 79h 20h 32h 00h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ 9h] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 0h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 1h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] 9: Power Supply 2 (Power Supply): [Presence detected] ===================================================== SDR Full Sensor Record ===================================================== [ Ah] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ Ah] = sensor_number[ 8b] [ Ah] = entity_id[ 8b] [ 3h] = entity_instance[ 7b] [ 1h] = entity_instance.type[ 1b] [ 1h] = sensor_initialization.sensor_scanning[ 1b] [ 1h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 1h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 1h] = sensor_capabilities.event_message_control_support[ 2b] [ 0h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 1h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 1h] = sensor_capabilities.entity_ignore_support[ 1b] [ 8h] = sensor_type[ 8b] [ Bh] = event_reading_type_code[ 8b] [ 0h] = assertion_event_mask.event_offset_0[ 1b] [ 0h] = assertion_event_mask.event_offset_1[ 1b] [ 0h] = assertion_event_mask.event_offset_2[ 1b] [ 1h] = assertion_event_mask.event_offset_3[ 1b] [ 1h] = assertion_event_mask.event_offset_4[ 1b] [ 1h] = assertion_event_mask.event_offset_5[ 1b] [ 0h] = assertion_event_mask.event_offset_6[ 1b] [ 0h] = assertion_event_mask.event_offset_7[ 1b] [ 0h] = assertion_event_mask.event_offset_8[ 1b] [ 0h] = assertion_event_mask.event_offset_9[ 1b] [ 0h] = assertion_event_mask.event_offset_10[ 1b] [ 0h] = assertion_event_mask.event_offset_11[ 1b] [ 0h] = assertion_event_mask.event_offset_12[ 1b] [ 0h] = assertion_event_mask.event_offset_13[ 1b] [ 0h] = assertion_event_mask.event_offset_14[ 1b] [ 0h] = assertion_event_mask.reserved[ 1b] [ 0h] = deassertion_event_mask.event_offset_0[ 1b] [ 1h] = deassertion_event_mask.event_offset_1[ 1b] [ 0h] = deassertion_event_mask.event_offset_2[ 1b] [ 0h] = deassertion_event_mask.event_offset_3[ 1b] [ 0h] = deassertion_event_mask.event_offset_4[ 1b] [ 0h] = deassertion_event_mask.event_offset_5[ 1b] [ 0h] = deassertion_event_mask.event_offset_6[ 1b] [ 0h] = deassertion_event_mask.event_offset_7[ 1b] [ 0h] = deassertion_event_mask.event_offset_8[ 1b] [ 0h] = deassertion_event_mask.event_offset_9[ 1b] [ 0h] = deassertion_event_mask.event_offset_10[ 1b] [ 0h] = deassertion_event_mask.event_offset_11[ 1b] [ 0h] = deassertion_event_mask.event_offset_12[ 1b] [ 0h] = deassertion_event_mask.event_offset_13[ 1b] [ 0h] = deassertion_event_mask.event_offset_14[ 1b] [ 0h] = deassertion_event_mask.reserved[ 1b] [ 1h] = discrete_reading_mask.state_bit_0[ 1b] [ 1h] = discrete_reading_mask.state_bit_1[ 1b] [ 0h] = discrete_reading_mask.state_bit_2[ 1b] [ 1h] = discrete_reading_mask.state_bit_3[ 1b] [ 1h] = discrete_reading_mask.state_bit_4[ 1b] [ 1h] = discrete_reading_mask.state_bit_5[ 1b] [ 0h] = discrete_reading_mask.state_bit_6[ 1b] [ 0h] = discrete_reading_mask.state_bit_7[ 1b] [ 0h] = discrete_reading_mask.state_bit_8[ 1b] [ 0h] = discrete_reading_mask.state_bit_9[ 1b] [ 0h] = discrete_reading_mask.state_bit_10[ 1b] [ 0h] = discrete_reading_mask.state_bit_11[ 1b] [ 0h] = discrete_reading_mask.state_bit_12[ 1b] [ 0h] = discrete_reading_mask.state_bit_13[ 1b] [ 0h] = discrete_reading_mask.state_bit_14[ 1b] [ 0h] = discrete_reading_mask.reserved[ 1b] [ 0h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 0h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 0h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 0h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ 0h] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ 0h] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] [ 0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 0h] = oem[ 8b] [ CEh] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 50h 6Fh 77h 65h 72h 20h 53h 75h ] [ 70h 70h 6Ch 69h 65h 73h 00h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ Ah] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 0h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 1h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] 10: Power Supplies (Power Supply): [Fully Redundant] ===================================================== SDR Entity Association Record ===================================================== [ Bh] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 8h] = record_type[ 8b] [ Bh] = record_length[ 8b] [ Ah] = container_entity_id[ 8b] [ 3h] = container_entity_instance[ 8b] [ 0h] = flags.reserved[ 5b] [ 0h] = flags.sensor_presence[ 1b] [ 0h] = flags.record_link[ 1b] [ 1h] = flags.contained_entities[ 1b] [ Ah] = entity_id_contained_entity_range_1[ 8b] [ 1h] = instance_id_contained_entity_range_1[ 8b] [ Ah] = entity_id_contained_entity_range_2[ 8b] [ 2h] = instance_id_contained_entity_range_2[ 8b] [ 0h] = entity_id_contained_entity_range_3[ 8b] [ 0h] = instance_id_contained_entity_range_3[ 8b] [ 0h] = entity_id_contained_entity_range_4[ 8b] [ 0h] = instance_id_contained_entity_range_4[ 8b] ===================================================== SDR Full Sensor Record ===================================================== [ Ch] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ Bh] = sensor_number[ 8b] [ 7h] = entity_id[ 8b] [ 1h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 1h] = sensor_initialization.sensor_scanning[ 1b] [ 1h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 1h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 1h] = sensor_capabilities.event_message_control_support[ 2b] [ 0h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 1h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 1h] = sensor_capabilities.entity_ignore_support[ 1b] [ 4h] = sensor_type[ 8b] [ Ah] = event_reading_type_code[ 8b] [ 0h] = assertion_event_mask.event_offset_0[ 1b] [ 0h] = assertion_event_mask.event_offset_1[ 1b] [ 0h] = assertion_event_mask.event_offset_2[ 1b] [ 0h] = assertion_event_mask.event_offset_3[ 1b] [ 1h] = assertion_event_mask.event_offset_4[ 1b] [ 0h] = assertion_event_mask.event_offset_5[ 1b] [ 0h] = assertion_event_mask.event_offset_6[ 1b] [ 0h] = assertion_event_mask.event_offset_7[ 1b] [ 0h] = assertion_event_mask.event_offset_8[ 1b] [ 0h] = assertion_event_mask.event_offset_9[ 1b] [ 0h] = assertion_event_mask.event_offset_10[ 1b] [ 0h] = assertion_event_mask.event_offset_11[ 1b] [ 0h] = assertion_event_mask.event_offset_12[ 1b] [ 0h] = assertion_event_mask.event_offset_13[ 1b] [ 0h] = assertion_event_mask.event_offset_14[ 1b] [ 0h] = assertion_event_mask.reserved[ 1b] [ 1h] = deassertion_event_mask.event_offset_0[ 1b] [ 0h] = deassertion_event_mask.event_offset_1[ 1b] [ 0h] = deassertion_event_mask.event_offset_2[ 1b] [ 0h] = deassertion_event_mask.event_offset_3[ 1b] [ 0h] = deassertion_event_mask.event_offset_4[ 1b] [ 0h] = deassertion_event_mask.event_offset_5[ 1b] [ 0h] = deassertion_event_mask.event_offset_6[ 1b] [ 0h] = deassertion_event_mask.event_offset_7[ 1b] [ 0h] = deassertion_event_mask.event_offset_8[ 1b] [ 0h] = deassertion_event_mask.event_offset_9[ 1b] [ 0h] = deassertion_event_mask.event_offset_10[ 1b] [ 0h] = deassertion_event_mask.event_offset_11[ 1b] [ 0h] = deassertion_event_mask.event_offset_12[ 1b] [ 0h] = deassertion_event_mask.event_offset_13[ 1b] [ 0h] = deassertion_event_mask.event_offset_14[ 1b] [ 0h] = deassertion_event_mask.reserved[ 1b] [ 1h] = discrete_reading_mask.state_bit_0[ 1b] [ 0h] = discrete_reading_mask.state_bit_1[ 1b] [ 0h] = discrete_reading_mask.state_bit_2[ 1b] [ 1h] = discrete_reading_mask.state_bit_3[ 1b] [ 1h] = discrete_reading_mask.state_bit_4[ 1b] [ 0h] = discrete_reading_mask.state_bit_5[ 1b] [ 0h] = discrete_reading_mask.state_bit_6[ 1b] [ 0h] = discrete_reading_mask.state_bit_7[ 1b] [ 1h] = discrete_reading_mask.state_bit_8[ 1b] [ 0h] = discrete_reading_mask.state_bit_9[ 1b] [ 0h] = discrete_reading_mask.state_bit_10[ 1b] [ 0h] = discrete_reading_mask.state_bit_11[ 1b] [ 0h] = discrete_reading_mask.state_bit_12[ 1b] [ 0h] = discrete_reading_mask.state_bit_13[ 1b] [ 0h] = discrete_reading_mask.state_bit_14[ 1b] [ 0h] = discrete_reading_mask.reserved[ 1b] [ 1h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 0h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 88h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 1h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ Dh] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ FFh] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] [ 0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 0h] = oem[ 8b] [ C5h] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 46h 61h 6Eh 20h 31h 00h 00h 00h ] [ 00h 00h 00h 00h 00h 00h 00h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ Bh] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 59h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 1h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] 12: Fan 1 (Fan): [transition to Running] ===================================================== SDR Full Sensor Record ===================================================== [ Dh] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ Ch] = sensor_number[ 8b] [ 7h] = entity_id[ 8b] [ 2h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 1h] = sensor_initialization.sensor_scanning[ 1b] [ 1h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 1h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 1h] = sensor_capabilities.event_message_control_support[ 2b] [ 0h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 1h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 1h] = sensor_capabilities.entity_ignore_support[ 1b] [ 4h] = sensor_type[ 8b] [ Ah] = event_reading_type_code[ 8b] [ 0h] = assertion_event_mask.event_offset_0[ 1b] [ 0h] = assertion_event_mask.event_offset_1[ 1b] [ 0h] = assertion_event_mask.event_offset_2[ 1b] [ 0h] = assertion_event_mask.event_offset_3[ 1b] [ 1h] = assertion_event_mask.event_offset_4[ 1b] [ 0h] = assertion_event_mask.event_offset_5[ 1b] [ 0h] = assertion_event_mask.event_offset_6[ 1b] [ 0h] = assertion_event_mask.event_offset_7[ 1b] [ 0h] = assertion_event_mask.event_offset_8[ 1b] [ 0h] = assertion_event_mask.event_offset_9[ 1b] [ 0h] = assertion_event_mask.event_offset_10[ 1b] [ 0h] = assertion_event_mask.event_offset_11[ 1b] [ 0h] = assertion_event_mask.event_offset_12[ 1b] [ 0h] = assertion_event_mask.event_offset_13[ 1b] [ 0h] = assertion_event_mask.event_offset_14[ 1b] [ 0h] = assertion_event_mask.reserved[ 1b] [ 1h] = deassertion_event_mask.event_offset_0[ 1b] [ 0h] = deassertion_event_mask.event_offset_1[ 1b] [ 0h] = deassertion_event_mask.event_offset_2[ 1b] [ 0h] = deassertion_event_mask.event_offset_3[ 1b] [ 0h] = deassertion_event_mask.event_offset_4[ 1b] [ 0h] = deassertion_event_mask.event_offset_5[ 1b] [ 0h] = deassertion_event_mask.event_offset_6[ 1b] [ 0h] = deassertion_event_mask.event_offset_7[ 1b] [ 0h] = deassertion_event_mask.event_offset_8[ 1b] [ 0h] = deassertion_event_mask.event_offset_9[ 1b] [ 0h] = deassertion_event_mask.event_offset_10[ 1b] [ 0h] = deassertion_event_mask.event_offset_11[ 1b] [ 0h] = deassertion_event_mask.event_offset_12[ 1b] [ 0h] = deassertion_event_mask.event_offset_13[ 1b] [ 0h] = deassertion_event_mask.event_offset_14[ 1b] [ 0h] = deassertion_event_mask.reserved[ 1b] [ 1h] = discrete_reading_mask.state_bit_0[ 1b] [ 0h] = discrete_reading_mask.state_bit_1[ 1b] [ 0h] = discrete_reading_mask.state_bit_2[ 1b] [ 1h] = discrete_reading_mask.state_bit_3[ 1b] [ 1h] = discrete_reading_mask.state_bit_4[ 1b] [ 0h] = discrete_reading_mask.state_bit_5[ 1b] [ 0h] = discrete_reading_mask.state_bit_6[ 1b] [ 0h] = discrete_reading_mask.state_bit_7[ 1b] [ 1h] = discrete_reading_mask.state_bit_8[ 1b] [ 0h] = discrete_reading_mask.state_bit_9[ 1b] [ 0h] = discrete_reading_mask.state_bit_10[ 1b] [ 0h] = discrete_reading_mask.state_bit_11[ 1b] [ 0h] = discrete_reading_mask.state_bit_12[ 1b] [ 0h] = discrete_reading_mask.state_bit_13[ 1b] [ 0h] = discrete_reading_mask.state_bit_14[ 1b] [ 0h] = discrete_reading_mask.reserved[ 1b] [ 1h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 0h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 88h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 1h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ Dh] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ FFh] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] [ 0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 0h] = oem[ 8b] [ C5h] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 46h 61h 6Eh 20h 32h 00h 00h 00h ] [ 00h 00h 00h 00h 00h 00h 00h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ Ch] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 59h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 1h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] 13: Fan 2 (Fan): [transition to Running] ===================================================== SDR Full Sensor Record ===================================================== [ Eh] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ Dh] = sensor_number[ 8b] [ 7h] = entity_id[ 8b] [ 3h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 1h] = sensor_initialization.sensor_scanning[ 1b] [ 1h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 1h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 1h] = sensor_capabilities.event_message_control_support[ 2b] [ 0h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 1h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 1h] = sensor_capabilities.entity_ignore_support[ 1b] [ 4h] = sensor_type[ 8b] [ Ah] = event_reading_type_code[ 8b] [ 0h] = assertion_event_mask.event_offset_0[ 1b] [ 0h] = assertion_event_mask.event_offset_1[ 1b] [ 0h] = assertion_event_mask.event_offset_2[ 1b] [ 0h] = assertion_event_mask.event_offset_3[ 1b] [ 1h] = assertion_event_mask.event_offset_4[ 1b] [ 0h] = assertion_event_mask.event_offset_5[ 1b] [ 0h] = assertion_event_mask.event_offset_6[ 1b] [ 0h] = assertion_event_mask.event_offset_7[ 1b] [ 0h] = assertion_event_mask.event_offset_8[ 1b] [ 0h] = assertion_event_mask.event_offset_9[ 1b] [ 0h] = assertion_event_mask.event_offset_10[ 1b] [ 0h] = assertion_event_mask.event_offset_11[ 1b] [ 0h] = assertion_event_mask.event_offset_12[ 1b] [ 0h] = assertion_event_mask.event_offset_13[ 1b] [ 0h] = assertion_event_mask.event_offset_14[ 1b] [ 0h] = assertion_event_mask.reserved[ 1b] [ 1h] = deassertion_event_mask.event_offset_0[ 1b] [ 0h] = deassertion_event_mask.event_offset_1[ 1b] [ 0h] = deassertion_event_mask.event_offset_2[ 1b] [ 0h] = deassertion_event_mask.event_offset_3[ 1b] [ 0h] = deassertion_event_mask.event_offset_4[ 1b] [ 0h] = deassertion_event_mask.event_offset_5[ 1b] [ 0h] = deassertion_event_mask.event_offset_6[ 1b] [ 0h] = deassertion_event_mask.event_offset_7[ 1b] [ 0h] = deassertion_event_mask.event_offset_8[ 1b] [ 0h] = deassertion_event_mask.event_offset_9[ 1b] [ 0h] = deassertion_event_mask.event_offset_10[ 1b] [ 0h] = deassertion_event_mask.event_offset_11[ 1b] [ 0h] = deassertion_event_mask.event_offset_12[ 1b] [ 0h] = deassertion_event_mask.event_offset_13[ 1b] [ 0h] = deassertion_event_mask.event_offset_14[ 1b] [ 0h] = deassertion_event_mask.reserved[ 1b] [ 1h] = discrete_reading_mask.state_bit_0[ 1b] [ 0h] = discrete_reading_mask.state_bit_1[ 1b] [ 0h] = discrete_reading_mask.state_bit_2[ 1b] [ 1h] = discrete_reading_mask.state_bit_3[ 1b] [ 1h] = discrete_reading_mask.state_bit_4[ 1b] [ 0h] = discrete_reading_mask.state_bit_5[ 1b] [ 0h] = discrete_reading_mask.state_bit_6[ 1b] [ 0h] = discrete_reading_mask.state_bit_7[ 1b] [ 1h] = discrete_reading_mask.state_bit_8[ 1b] [ 0h] = discrete_reading_mask.state_bit_9[ 1b] [ 0h] = discrete_reading_mask.state_bit_10[ 1b] [ 0h] = discrete_reading_mask.state_bit_11[ 1b] [ 0h] = discrete_reading_mask.state_bit_12[ 1b] [ 0h] = discrete_reading_mask.state_bit_13[ 1b] [ 0h] = discrete_reading_mask.state_bit_14[ 1b] [ 0h] = discrete_reading_mask.reserved[ 1b] [ 1h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 0h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 88h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 1h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ Dh] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ FFh] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] [ 0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 0h] = oem[ 8b] [ C5h] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 46h 61h 6Eh 20h 33h 00h 00h 00h ] [ 00h 00h 00h 00h 00h 00h 00h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ Dh] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 59h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 1h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] 14: Fan 3 (Fan): [transition to Running] ===================================================== SDR Full Sensor Record ===================================================== [ Fh] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ Eh] = sensor_number[ 8b] [ 7h] = entity_id[ 8b] [ 4h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 1h] = sensor_initialization.sensor_scanning[ 1b] [ 1h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 1h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 1h] = sensor_capabilities.event_message_control_support[ 2b] [ 0h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 1h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 1h] = sensor_capabilities.entity_ignore_support[ 1b] [ 4h] = sensor_type[ 8b] [ Ah] = event_reading_type_code[ 8b] [ 0h] = assertion_event_mask.event_offset_0[ 1b] [ 0h] = assertion_event_mask.event_offset_1[ 1b] [ 0h] = assertion_event_mask.event_offset_2[ 1b] [ 0h] = assertion_event_mask.event_offset_3[ 1b] [ 1h] = assertion_event_mask.event_offset_4[ 1b] [ 0h] = assertion_event_mask.event_offset_5[ 1b] [ 0h] = assertion_event_mask.event_offset_6[ 1b] [ 0h] = assertion_event_mask.event_offset_7[ 1b] [ 0h] = assertion_event_mask.event_offset_8[ 1b] [ 0h] = assertion_event_mask.event_offset_9[ 1b] [ 0h] = assertion_event_mask.event_offset_10[ 1b] [ 0h] = assertion_event_mask.event_offset_11[ 1b] [ 0h] = assertion_event_mask.event_offset_12[ 1b] [ 0h] = assertion_event_mask.event_offset_13[ 1b] [ 0h] = assertion_event_mask.event_offset_14[ 1b] [ 0h] = assertion_event_mask.reserved[ 1b] [ 1h] = deassertion_event_mask.event_offset_0[ 1b] [ 0h] = deassertion_event_mask.event_offset_1[ 1b] [ 0h] = deassertion_event_mask.event_offset_2[ 1b] [ 0h] = deassertion_event_mask.event_offset_3[ 1b] [ 0h] = deassertion_event_mask.event_offset_4[ 1b] [ 0h] = deassertion_event_mask.event_offset_5[ 1b] [ 0h] = deassertion_event_mask.event_offset_6[ 1b] [ 0h] = deassertion_event_mask.event_offset_7[ 1b] [ 0h] = deassertion_event_mask.event_offset_8[ 1b] [ 0h] = deassertion_event_mask.event_offset_9[ 1b] [ 0h] = deassertion_event_mask.event_offset_10[ 1b] [ 0h] = deassertion_event_mask.event_offset_11[ 1b] [ 0h] = deassertion_event_mask.event_offset_12[ 1b] [ 0h] = deassertion_event_mask.event_offset_13[ 1b] [ 0h] = deassertion_event_mask.event_offset_14[ 1b] [ 0h] = deassertion_event_mask.reserved[ 1b] [ 1h] = discrete_reading_mask.state_bit_0[ 1b] [ 0h] = discrete_reading_mask.state_bit_1[ 1b] [ 0h] = discrete_reading_mask.state_bit_2[ 1b] [ 1h] = discrete_reading_mask.state_bit_3[ 1b] [ 1h] = discrete_reading_mask.state_bit_4[ 1b] [ 0h] = discrete_reading_mask.state_bit_5[ 1b] [ 0h] = discrete_reading_mask.state_bit_6[ 1b] [ 0h] = discrete_reading_mask.state_bit_7[ 1b] [ 1h] = discrete_reading_mask.state_bit_8[ 1b] [ 0h] = discrete_reading_mask.state_bit_9[ 1b] [ 0h] = discrete_reading_mask.state_bit_10[ 1b] [ 0h] = discrete_reading_mask.state_bit_11[ 1b] [ 0h] = discrete_reading_mask.state_bit_12[ 1b] [ 0h] = discrete_reading_mask.state_bit_13[ 1b] [ 0h] = discrete_reading_mask.state_bit_14[ 1b] [ 0h] = discrete_reading_mask.reserved[ 1b] [ 1h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 0h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 88h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 1h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ Dh] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ FFh] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] [ 0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 0h] = oem[ 8b] [ C5h] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 46h 61h 6Eh 20h 34h 00h 00h 00h ] [ 00h 00h 00h 00h 00h 00h 00h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ Eh] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 59h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 1h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] 15: Fan 4 (Fan): [transition to Running] ===================================================== SDR Full Sensor Record ===================================================== [ 10h] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ Fh] = sensor_number[ 8b] [ 7h] = entity_id[ 8b] [ 5h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 1h] = sensor_initialization.sensor_scanning[ 1b] [ 1h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 1h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 1h] = sensor_capabilities.event_message_control_support[ 2b] [ 0h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 1h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 1h] = sensor_capabilities.entity_ignore_support[ 1b] [ 4h] = sensor_type[ 8b] [ Ah] = event_reading_type_code[ 8b] [ 0h] = assertion_event_mask.event_offset_0[ 1b] [ 0h] = assertion_event_mask.event_offset_1[ 1b] [ 0h] = assertion_event_mask.event_offset_2[ 1b] [ 0h] = assertion_event_mask.event_offset_3[ 1b] [ 1h] = assertion_event_mask.event_offset_4[ 1b] [ 0h] = assertion_event_mask.event_offset_5[ 1b] [ 0h] = assertion_event_mask.event_offset_6[ 1b] [ 0h] = assertion_event_mask.event_offset_7[ 1b] [ 0h] = assertion_event_mask.event_offset_8[ 1b] [ 0h] = assertion_event_mask.event_offset_9[ 1b] [ 0h] = assertion_event_mask.event_offset_10[ 1b] [ 0h] = assertion_event_mask.event_offset_11[ 1b] [ 0h] = assertion_event_mask.event_offset_12[ 1b] [ 0h] = assertion_event_mask.event_offset_13[ 1b] [ 0h] = assertion_event_mask.event_offset_14[ 1b] [ 0h] = assertion_event_mask.reserved[ 1b] [ 1h] = deassertion_event_mask.event_offset_0[ 1b] [ 0h] = deassertion_event_mask.event_offset_1[ 1b] [ 0h] = deassertion_event_mask.event_offset_2[ 1b] [ 0h] = deassertion_event_mask.event_offset_3[ 1b] [ 0h] = deassertion_event_mask.event_offset_4[ 1b] [ 0h] = deassertion_event_mask.event_offset_5[ 1b] [ 0h] = deassertion_event_mask.event_offset_6[ 1b] [ 0h] = deassertion_event_mask.event_offset_7[ 1b] [ 0h] = deassertion_event_mask.event_offset_8[ 1b] [ 0h] = deassertion_event_mask.event_offset_9[ 1b] [ 0h] = deassertion_event_mask.event_offset_10[ 1b] [ 0h] = deassertion_event_mask.event_offset_11[ 1b] [ 0h] = deassertion_event_mask.event_offset_12[ 1b] [ 0h] = deassertion_event_mask.event_offset_13[ 1b] [ 0h] = deassertion_event_mask.event_offset_14[ 1b] [ 0h] = deassertion_event_mask.reserved[ 1b] [ 1h] = discrete_reading_mask.state_bit_0[ 1b] [ 0h] = discrete_reading_mask.state_bit_1[ 1b] [ 0h] = discrete_reading_mask.state_bit_2[ 1b] [ 1h] = discrete_reading_mask.state_bit_3[ 1b] [ 1h] = discrete_reading_mask.state_bit_4[ 1b] [ 0h] = discrete_reading_mask.state_bit_5[ 1b] [ 0h] = discrete_reading_mask.state_bit_6[ 1b] [ 0h] = discrete_reading_mask.state_bit_7[ 1b] [ 1h] = discrete_reading_mask.state_bit_8[ 1b] [ 0h] = discrete_reading_mask.state_bit_9[ 1b] [ 0h] = discrete_reading_mask.state_bit_10[ 1b] [ 0h] = discrete_reading_mask.state_bit_11[ 1b] [ 0h] = discrete_reading_mask.state_bit_12[ 1b] [ 0h] = discrete_reading_mask.state_bit_13[ 1b] [ 0h] = discrete_reading_mask.state_bit_14[ 1b] [ 0h] = discrete_reading_mask.reserved[ 1b] [ 1h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 0h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 88h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 1h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ Dh] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ FFh] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] [ 0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 0h] = oem[ 8b] [ C5h] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 46h 61h 6Eh 20h 35h 00h 00h 00h ] [ 00h 00h 00h 00h 00h 00h 00h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ Fh] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 59h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 1h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] 16: Fan 5 (Fan): [transition to Running] ===================================================== SDR Full Sensor Record ===================================================== [ 11h] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ 10h] = sensor_number[ 8b] [ 7h] = entity_id[ 8b] [ 6h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 1h] = sensor_initialization.sensor_scanning[ 1b] [ 1h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 1h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 1h] = sensor_capabilities.event_message_control_support[ 2b] [ 0h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 1h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 1h] = sensor_capabilities.entity_ignore_support[ 1b] [ 4h] = sensor_type[ 8b] [ Ah] = event_reading_type_code[ 8b] [ 0h] = assertion_event_mask.event_offset_0[ 1b] [ 0h] = assertion_event_mask.event_offset_1[ 1b] [ 0h] = assertion_event_mask.event_offset_2[ 1b] [ 0h] = assertion_event_mask.event_offset_3[ 1b] [ 1h] = assertion_event_mask.event_offset_4[ 1b] [ 0h] = assertion_event_mask.event_offset_5[ 1b] [ 0h] = assertion_event_mask.event_offset_6[ 1b] [ 0h] = assertion_event_mask.event_offset_7[ 1b] [ 0h] = assertion_event_mask.event_offset_8[ 1b] [ 0h] = assertion_event_mask.event_offset_9[ 1b] [ 0h] = assertion_event_mask.event_offset_10[ 1b] [ 0h] = assertion_event_mask.event_offset_11[ 1b] [ 0h] = assertion_event_mask.event_offset_12[ 1b] [ 0h] = assertion_event_mask.event_offset_13[ 1b] [ 0h] = assertion_event_mask.event_offset_14[ 1b] [ 0h] = assertion_event_mask.reserved[ 1b] [ 1h] = deassertion_event_mask.event_offset_0[ 1b] [ 0h] = deassertion_event_mask.event_offset_1[ 1b] [ 0h] = deassertion_event_mask.event_offset_2[ 1b] [ 0h] = deassertion_event_mask.event_offset_3[ 1b] [ 0h] = deassertion_event_mask.event_offset_4[ 1b] [ 0h] = deassertion_event_mask.event_offset_5[ 1b] [ 0h] = deassertion_event_mask.event_offset_6[ 1b] [ 0h] = deassertion_event_mask.event_offset_7[ 1b] [ 0h] = deassertion_event_mask.event_offset_8[ 1b] [ 0h] = deassertion_event_mask.event_offset_9[ 1b] [ 0h] = deassertion_event_mask.event_offset_10[ 1b] [ 0h] = deassertion_event_mask.event_offset_11[ 1b] [ 0h] = deassertion_event_mask.event_offset_12[ 1b] [ 0h] = deassertion_event_mask.event_offset_13[ 1b] [ 0h] = deassertion_event_mask.event_offset_14[ 1b] [ 0h] = deassertion_event_mask.reserved[ 1b] [ 1h] = discrete_reading_mask.state_bit_0[ 1b] [ 0h] = discrete_reading_mask.state_bit_1[ 1b] [ 0h] = discrete_reading_mask.state_bit_2[ 1b] [ 1h] = discrete_reading_mask.state_bit_3[ 1b] [ 1h] = discrete_reading_mask.state_bit_4[ 1b] [ 0h] = discrete_reading_mask.state_bit_5[ 1b] [ 0h] = discrete_reading_mask.state_bit_6[ 1b] [ 0h] = discrete_reading_mask.state_bit_7[ 1b] [ 1h] = discrete_reading_mask.state_bit_8[ 1b] [ 0h] = discrete_reading_mask.state_bit_9[ 1b] [ 0h] = discrete_reading_mask.state_bit_10[ 1b] [ 0h] = discrete_reading_mask.state_bit_11[ 1b] [ 0h] = discrete_reading_mask.state_bit_12[ 1b] [ 0h] = discrete_reading_mask.state_bit_13[ 1b] [ 0h] = discrete_reading_mask.state_bit_14[ 1b] [ 0h] = discrete_reading_mask.reserved[ 1b] [ 1h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 0h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 88h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 1h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ Dh] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ FFh] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] [ 0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 0h] = oem[ 8b] [ C5h] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 46h 61h 6Eh 20h 36h 00h 00h 00h ] [ 00h 00h 00h 00h 00h 00h 00h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ 10h] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 59h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 1h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] 17: Fan 6 (Fan): [transition to Running] ===================================================== SDR Full Sensor Record ===================================================== [ 12h] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ 11h] = sensor_number[ 8b] [ 7h] = entity_id[ 8b] [ 7h] = entity_instance[ 7b] [ 1h] = entity_instance.type[ 1b] [ 1h] = sensor_initialization.sensor_scanning[ 1b] [ 1h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 1h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 1h] = sensor_capabilities.event_message_control_support[ 2b] [ 0h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 1h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 1h] = sensor_capabilities.entity_ignore_support[ 1b] [ 4h] = sensor_type[ 8b] [ Bh] = event_reading_type_code[ 8b] [ 0h] = assertion_event_mask.event_offset_0[ 1b] [ 0h] = assertion_event_mask.event_offset_1[ 1b] [ 0h] = assertion_event_mask.event_offset_2[ 1b] [ 1h] = assertion_event_mask.event_offset_3[ 1b] [ 1h] = assertion_event_mask.event_offset_4[ 1b] [ 1h] = assertion_event_mask.event_offset_5[ 1b] [ 0h] = assertion_event_mask.event_offset_6[ 1b] [ 0h] = assertion_event_mask.event_offset_7[ 1b] [ 0h] = assertion_event_mask.event_offset_8[ 1b] [ 0h] = assertion_event_mask.event_offset_9[ 1b] [ 0h] = assertion_event_mask.event_offset_10[ 1b] [ 0h] = assertion_event_mask.event_offset_11[ 1b] [ 0h] = assertion_event_mask.event_offset_12[ 1b] [ 0h] = assertion_event_mask.event_offset_13[ 1b] [ 0h] = assertion_event_mask.event_offset_14[ 1b] [ 0h] = assertion_event_mask.reserved[ 1b] [ 0h] = deassertion_event_mask.event_offset_0[ 1b] [ 1h] = deassertion_event_mask.event_offset_1[ 1b] [ 0h] = deassertion_event_mask.event_offset_2[ 1b] [ 0h] = deassertion_event_mask.event_offset_3[ 1b] [ 0h] = deassertion_event_mask.event_offset_4[ 1b] [ 0h] = deassertion_event_mask.event_offset_5[ 1b] [ 0h] = deassertion_event_mask.event_offset_6[ 1b] [ 0h] = deassertion_event_mask.event_offset_7[ 1b] [ 0h] = deassertion_event_mask.event_offset_8[ 1b] [ 0h] = deassertion_event_mask.event_offset_9[ 1b] [ 0h] = deassertion_event_mask.event_offset_10[ 1b] [ 0h] = deassertion_event_mask.event_offset_11[ 1b] [ 0h] = deassertion_event_mask.event_offset_12[ 1b] [ 0h] = deassertion_event_mask.event_offset_13[ 1b] [ 0h] = deassertion_event_mask.event_offset_14[ 1b] [ 0h] = deassertion_event_mask.reserved[ 1b] [ 1h] = discrete_reading_mask.state_bit_0[ 1b] [ 1h] = discrete_reading_mask.state_bit_1[ 1b] [ 0h] = discrete_reading_mask.state_bit_2[ 1b] [ 1h] = discrete_reading_mask.state_bit_3[ 1b] [ 1h] = discrete_reading_mask.state_bit_4[ 1b] [ 1h] = discrete_reading_mask.state_bit_5[ 1b] [ 0h] = discrete_reading_mask.state_bit_6[ 1b] [ 0h] = discrete_reading_mask.state_bit_7[ 1b] [ 0h] = discrete_reading_mask.state_bit_8[ 1b] [ 0h] = discrete_reading_mask.state_bit_9[ 1b] [ 0h] = discrete_reading_mask.state_bit_10[ 1b] [ 0h] = discrete_reading_mask.state_bit_11[ 1b] [ 0h] = discrete_reading_mask.state_bit_12[ 1b] [ 0h] = discrete_reading_mask.state_bit_13[ 1b] [ 0h] = discrete_reading_mask.state_bit_14[ 1b] [ 0h] = discrete_reading_mask.reserved[ 1b] [ 0h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 0h] = sensor_unit1.analog_data_format[ 2b] [ 0h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 0h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 0h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ 0h] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ 0h] = sensor_maximum_reading[ 8b] [ 0h] = sensor_minimum_reading[ 8b] [ 0h] = upper_non_recoverable_threshold[ 8b] [ 0h] = upper_critical_threshold[ 8b] [ 0h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 0h] = oem[ 8b] [ C4h] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 46h 61h 6Eh 73h 00h 00h 00h 00h ] [ 00h 00h 00h 00h 00h 00h 00h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ 11h] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 0h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 1h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] 18: Fans (Fan): [Fully Redundant] ===================================================== SDR Entity Association Record ===================================================== [ 13h] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 8h] = record_type[ 8b] [ Bh] = record_length[ 8b] [ 7h] = container_entity_id[ 8b] [ 7h] = container_entity_instance[ 8b] [ 0h] = flags.reserved[ 5b] [ 0h] = flags.sensor_presence[ 1b] [ 0h] = flags.record_link[ 1b] [ 1h] = flags.contained_entities[ 1b] [ 7h] = entity_id_contained_entity_range_1[ 8b] [ 1h] = instance_id_contained_entity_range_1[ 8b] [ 7h] = entity_id_contained_entity_range_2[ 8b] [ 6h] = instance_id_contained_entity_range_2[ 8b] [ 0h] = entity_id_contained_entity_range_3[ 8b] [ 0h] = instance_id_contained_entity_range_3[ 8b] [ 0h] = entity_id_contained_entity_range_4[ 8b] [ 0h] = instance_id_contained_entity_range_4[ 8b] ===================================================== SDR Full Sensor Record ===================================================== [ 14h] = record_id[16b] [ 1h] = sdr_version_major[ 4b] [ 5h] = sdr_version_minor[ 4b] [ 1h] = record_type[ 8b] [ 3Bh] = record_length[ 8b] [ 0h] = sensor_owner_id.type[ 1b] [ 10h] = sensor_owner_id[ 7b] [ 0h] = sensor_owner_lun[ 2b] [ 0h] = sensor_owner_lun.reserved[ 2b] [ 0h] = channel_number[ 4b] [ 12h] = sensor_number[ 8b] [ 3h] = entity_id[ 8b] [ 1h] = entity_instance[ 7b] [ 0h] = entity_instance.type[ 1b] [ 1h] = sensor_initialization.sensor_scanning[ 1b] [ 1h] = sensor_initialization.event_generation[ 1b] [ 0h] = sensor_initialization.init_sensor_type[ 1b] [ 0h] = sensor_initialization.init_hysteresis[ 1b] [ 0h] = sensor_initialization.init_thresholds[ 1b] [ 1h] = sensor_initialization.init_events[ 1b] [ 0h] = sensor_initialization.init_scanning[ 1b] [ 0h] = sensor_initialization.reserved[ 1b] [ 1h] = sensor_capabilities.event_message_control_support[ 2b] [ 2h] = sensor_capabilities.threshold_access_support[ 2b] [ 0h] = sensor_capabilities.hysteresis_support[ 2b] [ 1h] = sensor_capabilities.auto_re_arm_support[ 1b] [ 1h] = sensor_capabilities.entity_ignore_support[ 1b] [ 1h] = sensor_type[ 8b] [ 1h] = event_reading_type_code[ 8b] [ 0h] = threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b] [ 0h] = threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b] [ 0h] = threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b] [ 0h] = threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b] [ 0h] = threshold_assertion_event_mask.lower_non_recoverable_going_low_supported[ 1b] [ 0h] = threshold_assertion_event_mask.lower_non_recoverable_going_high_supported[ 1b] [ 0h] = threshold_assertion_event_mask.upper_non_critical_going_low_supported[ 1b] [ 0h] = threshold_assertion_event_mask.upper_non_critical_going_high_supported[ 1b] [ 0h] = threshold_assertion_event_mask.upper_critical_going_low_supported[ 1b] [ 1h] = threshold_assertion_event_mask.upper_critical_going_high_supported[ 1b] [ 0h] = threshold_assertion_event_mask.upper_non_recoverable_going_low_supported[ 1b] [ 1h] = threshold_assertion_event_mask.upper_non_recoverable_going_high_supported[ 1b] [ 0h] = lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b] [ 0h] = lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b] [ 0h] = lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b] [ 0h] = lower_threshold_reading_mask.reserved[ 1b] [ 0h] = threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.lower_non_critical_going_high_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.lower_non_recoverable_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.lower_non_recoverable_going_high_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_non_critical_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_non_critical_going_high_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[ 1b] [ 0h] = threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[ 1b] [ 0h] = upper_threshold_reading_mask.upper_non_critical_threshold_is_comparison[ 1b] [ 1h] = upper_threshold_reading_mask.upper_critical_threshold_is_comparison[ 1b] [ 1h] = upper_threshold_reading_mask.upper_non_recoverable_is_comparison[ 1b] [ 0h] = upper_threshold_reading_mask.reserved[ 1b] [ 0h] = readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b] [ 0h] = readable_threshold_mask.lower_critical_threshold_is_readable[ 1b] [ 0h] = readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b] [ 0h] = readable_threshold_mask.upper_non_critical_threshold_is_readable[ 1b] [ 1h] = readable_threshold_mask.upper_critical_threshold_is_readable[ 1b] [ 1h] = readable_threshold_mask.upper_non_recoverable_threshold_is_readable[ 1b] [ 0h] = readable_threshold_mask.reserved1[ 1b] [ 0h] = readable_threshold_mask.reserved2[ 1b] [ 0h] = settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.lower_critical_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.upper_critical_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.upper_non_recoverable_threshold_is_settable[ 1b] [ 0h] = settable_threshold_mask.reserved1[ 1b] [ 0h] = settable_threshold_mask.reserved2[ 1b] [ 0h] = sensor_unit1.percentage[ 1b] [ 0h] = sensor_unit1.modifier_unit[ 2b] [ 0h] = sensor_unit1.rate_unit[ 3b] [ 2h] = sensor_unit1.analog_data_format[ 2b] [ 1h] = sensor_unit2.base_unit[ 8b] [ 0h] = sensor_unit3.modifier_unit[ 8b] [ 0h] = linearization[ 7b] [ 0h] = linearization.reserved[ 1b] [ 1h] = m_ls[ 8b] [ 0h] = tolerance[ 6b] [ 0h] = m_ms[ 2b] [ 0h] = b_ls[ 8b] [ 0h] = accuracy_ls[ 6b] [ 0h] = b_ms[ 2b] [ 0h] = accuracy_exp.reserved[ 2b] [ 0h] = accuracy_exp[ 2b] [ 0h] = accuracy_ms[ 4b] [ 0h] = b_exponent[ 4b] [ 0h] = r_exponent[ 4b] [ 0h] = analog_characteristics_flag.nominal_reading[ 1b] [ 0h] = analog_characteristics_flag.normal_max[ 1b] [ 0h] = analog_characteristics_flag.normal_min[ 1b] [ 0h] = analog_characteristics_flag.reserved[ 5b] [ 0h] = nominal_reading[ 8b] [ 0h] = normal_maximum[ 8b] [ 0h] = normal_minimum[ 8b] [ 7Fh] = sensor_maximum_reading[ 8b] [ 81h] = sensor_minimum_reading[ 8b] [ 64h] = upper_non_recoverable_threshold[ 8b] [ 5Fh] = upper_critical_threshold[ 8b] [ 57h] = upper_non_critical_threshold[ 8b] [ 0h] = lower_non_recoverable_threshold[ 8b] [ 0h] = lower_critical_threshold[ 8b] [ 0h] = lower_non_critical_threshold[ 8b] [ 0h] = positive_going_threshold_hysteresis[ 8b] [ 0h] = negative_going_threshold_hysteresis[ 8b] [ 0h] = reserved[16b] [ 1h] = oem[ 8b] [ C6h] = id_string_type_length_code[ 8b] [ BYTE ARRAY ... ] = id_string[16B] [ 54h 65h 6Dh 70h 20h 31h 00h 00h ] [ 00h 00h 00h 00h 00h 00h 00h 00h ] ===================================================== Get Sensor Reading Request ===================================================== [ 2Dh] = cmd[ 8b] [ 12h] = sensor_number[ 8b] ===================================================== Get Sensor Reading Response ===================================================== [ 2Dh] = cmd[ 8b] [ 0h] = comp_code[ 8b] [ 23h] = sensor_reading[ 8b] [ 0h] = reserved1[ 5b] [ 0h] = reading_state[ 1b] [ 1h] = sensor_scanning[ 1b] [ 1h] = all_event_messages[ 1b] [ 0h] = sensor_event_bitmask1[ 8b] [ 0h] = sensor_event_bitmask2[ 7b] [ 1h] = reserved2[ 1b] ===================================================== Get Sensor Thresholds Request ===================================================== [ 27h] = cmd[ 8b] [ 12h] = sensor_number[ 8b] ===================================================== Get Sensor Thresholds Response ===================================================== [ 27h] = cmd[ 8b] [ C1h] = comp_code[ 8b] ipmi_cmd_get_sensor_thresholds: bad completion code: command invalid/not support