freeipmi-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Freeipmi-users] ipmi-sensors missing data on HP Gen7/8 servers


From: Stephen Abbene
Subject: Re: [Freeipmi-users] ipmi-sensors missing data on HP Gen7/8 servers
Date: Thu, 14 Mar 2013 18:21:11 -0700

Thanks for replying so Quickly Albert.  `ipmi-sensors -W discretereading` seems 
to have done the trick thank you.  Any tips on getting the "System Chassis 1 
UID Light" and "System Chassis 2 Health LED" fields to populate with meaningful 
data?

I have included the output of `ipmi-sensors -W discretereading --debug` below:

=====================================================
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]
[              3Eh] = record_count[16b]
[            FFFFh] = free_space[16b]
[        511B69F4h] = most_recent_addition_timestamp[32b]
[        FFFFFFFFh] = most_recent_erase_timestamp[32b]
[               1h] = 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 Full Sensor Record
=====================================================
[               0h] = 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.settable_sensor[ 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]
[               3h] = 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] = sensor_direction[ 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 ]
=====================================================
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]
[               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.settable_sensor[ 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]
[               3h] = 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] = sensor_direction[ 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]
[              CAh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 48h 65h 61h 6Ch 74h 68h 20h 4Ch ]
[ 45h 44h 00h 00h 00h 00h 00h 00h ]
=====================================================
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]
[               3h] = sensor_number[ 8b]
[               Ah] = 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]
[               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]
[               6h] = sensor_unit2.base_unit[ 8b]
[               0h] = sensor_unit3.modifier_unit[ 8b]
[               0h] = linearization[ 7b]
[               0h] = linearization.reserved[ 1b]
[               5h] = m_ls[ 8b]
[               0h] = tolerance[ 6b]
[               0h] = m_ms[ 2b]
[               0h] = b_ls[ 8b]
[               0h] = accuracy_ls[ 6b]
[               0h] = b_ms[ 2b]
[               0h] = sensor_direction[ 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]
[              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]
[               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 ]
=====================================================
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]
[               4h] = 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] = sensor_direction[ 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 ]
=====================================================
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]
[               5h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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 ]
=====================================================
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]
[               6h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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 ]
=====================================================
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]
[               7h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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 ]
=====================================================
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]
[               8h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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 ]
=====================================================
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]
[               9h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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 ]
=====================================================
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]
[               Ah] = sensor_number[ 8b]
[               7h] = entity_id[ 8b]
[               7h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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 37h 00h 00h 00h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
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]
[               Bh] = sensor_number[ 8b]
[               7h] = entity_id[ 8b]
[               8h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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 38h 00h 00h 00h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[               Bh] = 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]
[               9h] = 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]
[               3h] = 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] = sensor_direction[ 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 ]
=====================================================
SDR Entity Association Record
=====================================================
[               Ch] = 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]
[               9h] = 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]
[               2h] = instance_id_contained_entity_range_1[ 8b]
[               7h] = entity_id_contained_entity_range_2[ 8b]
[               8h] = 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
=====================================================
[               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]
[               Dh] = sensor_number[ 8b]
[              40h] = 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] = sensor_direction[ 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]
[              2Eh] = upper_non_recoverable_threshold[ 8b]
[              2Ah] = 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]
[              D0h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 30h 31h 2Dh 49h 6Eh 6Ch 65h 74h ]
[ 20h 41h 6Dh 62h 69h 65h 6Eh 74h ]
=====================================================
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]
[               Eh] = sensor_number[ 8b]
[              41h] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              46h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 30h 32h 2Dh 43h 50h 55h 20h 31h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
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]
[               Fh] = sensor_number[ 8b]
[              41h] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              46h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 30h 33h 2Dh 43h 50h 55h 20h 32h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
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]
[              10h] = sensor_number[ 8b]
[              20h] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              57h] = 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]
[ 30h 34h 2Dh 50h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 2Dh 36h 00h 00h ]
=====================================================
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]
[              11h] = sensor_number[ 8b]
[              20h] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              57h] = 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]
[ 30h 35h 2Dh 50h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 37h 2Dh 31h 32h 00h ]
=====================================================
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]
[              12h] = sensor_number[ 8b]
[              20h] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              57h] = 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]
[ 30h 36h 2Dh 50h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 2Dh 36h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              13h] = 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]
[              13h] = sensor_number[ 8b]
[              20h] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              57h] = 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]
[ 30h 37h 2Dh 50h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 37h 2Dh 31h 32h 00h ]
=====================================================
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]
[              14h] = sensor_number[ 8b]
[              20h] = 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]
[               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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 30h 38h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              15h] = 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]
[              15h] = sensor_number[ 8b]
[              20h] = 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]
[               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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 30h 39h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              16h] = 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]
[              16h] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               7h] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 30h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              17h] = 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]
[              17h] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               8h] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 31h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              18h] = 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]
[              18h] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               9h] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 32h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              19h] = 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]
[              19h] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Ah] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 33h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              1Ah] = 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]
[              1Ah] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Bh] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 34h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              1Bh] = 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]
[              1Bh] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Ch] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 35h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              1Ch] = 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]
[              1Ch] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Dh] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 36h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              1Dh] = 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]
[              1Dh] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Eh] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 37h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              1Eh] = 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]
[              1Eh] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Fh] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 38h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              1Fh] = 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]
[              1Fh] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[              10h] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 39h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              20h] = 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]
[              20h] = sensor_number[ 8b]
[               4h] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              3Ch] = 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]
[ 32h 30h 2Dh 48h 44h 20h 4Dh 61h ]
[ 78h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              21h] = 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]
[              21h] = sensor_number[ 8b]
[              42h] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              69h] = 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]
[              CAh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 31h 2Dh 43h 68h 69h 70h 73h ]
[ 65h 74h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              22h] = 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]
[              22h] = sensor_number[ 8b]
[               Ah] = 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]
[               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] = sensor_direction[ 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]
[               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]
[              C6h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 32h 2Dh 50h 2Fh 53h 00h 00h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              23h] = 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]
[              23h] = sensor_number[ 8b]
[              13h] = 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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 33h 2Dh 56h 52h 20h 50h 31h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              24h] = 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]
[              24h] = sensor_number[ 8b]
[              13h] = 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]
[               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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 34h 2Dh 56h 52h 20h 50h 32h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              25h] = 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]
[              25h] = sensor_number[ 8b]
[              13h] = 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]
[               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] = sensor_direction[ 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]
[               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]
[              CDh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 35h 2Dh 56h 52h 20h 50h 31h ]
[ 20h 5Ah 6Fh 6Eh 65h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              26h] = 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]
[              26h] = sensor_number[ 8b]
[              13h] = 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]
[               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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              CCh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 36h 2Dh 56h 52h 20h 50h 31h ]
[ 20h 4Dh 65h 6Dh 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              27h] = 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]
[              27h] = sensor_number[ 8b]
[              13h] = 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]
[               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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              CCh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 37h 2Dh 56h 52h 20h 50h 31h ]
[ 20h 4Dh 65h 6Dh 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              28h] = 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]
[              28h] = sensor_number[ 8b]
[              13h] = 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]
[               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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              CCh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 38h 2Dh 56h 52h 20h 50h 32h ]
[ 20h 4Dh 65h 6Dh 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              29h] = 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]
[              29h] = sensor_number[ 8b]
[              13h] = entity_id[ 8b]
[               7h] = 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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              CCh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 39h 2Dh 56h 52h 20h 50h 32h ]
[ 20h 4Dh 65h 6Dh 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              2Ah] = 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]
[              2Ah] = sensor_number[ 8b]
[              28h] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              41h] = 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]
[ 33h 30h 2Dh 53h 75h 70h 65h 72h ]
[ 63h 61h 70h 20h 4Dh 61h 78h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              2Bh] = 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]
[              2Bh] = sensor_number[ 8b]
[               6h] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[              CBh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 31h 2Dh 69h 4Ch 4Fh 20h 5Ah ]
[ 6Fh 6Eh 65h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              2Ch] = 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]
[              2Ch] = sensor_number[ 8b]
[              42h] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              64h] = 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]
[              C6h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 32h 2Dh 4Ch 4Fh 4Dh 00h 00h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              2Dh] = 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]
[              2Dh] = sensor_number[ 8b]
[               Bh] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              64h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 33h 2Dh 50h 43h 49h 20h 31h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              2Eh] = 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]
[              2Eh] = sensor_number[ 8b]
[               Bh] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              64h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 34h 2Dh 50h 43h 49h 20h 32h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              2Fh] = 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]
[              2Fh] = sensor_number[ 8b]
[              10h] = 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] = sensor_direction[ 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]
[              4Bh] = upper_non_recoverable_threshold[ 8b]
[              46h] = 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]
[              CDh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 35h 2Dh 50h 43h 49h 20h 31h ]
[ 20h 5Ah 6Fh 6Eh 65h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              30h] = 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]
[              30h] = sensor_number[ 8b]
[              10h] = 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]
[               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] = sensor_direction[ 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]
[              4Bh] = upper_non_recoverable_threshold[ 8b]
[              46h] = 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]
[              CDh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 36h 2Dh 50h 43h 49h 20h 32h ]
[ 20h 5Ah 6Fh 6Eh 65h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              31h] = 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]
[              31h] = sensor_number[ 8b]
[               Bh] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              64h] = 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]
[              CBh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 37h 2Dh 4Ch 4Fh 4Dh 20h 43h ]
[ 61h 72h 64h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              32h] = 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]
[              32h] = sensor_number[ 8b]
[              42h] = 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]
[               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] = sensor_direction[ 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]
[              4Bh] = upper_non_recoverable_threshold[ 8b]
[              46h] = 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]
[ 33h 38h 2Dh 53h 79h 73h 74h 65h ]
[ 6Dh 20h 42h 6Fh 61h 72h 64h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              33h] = 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]
[              33h] = sensor_number[ 8b]
[               Dh] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 33h 39h 2Dh 53h 79h 73h 20h 45h ]
[ 78h 68h 61h 75h 73h 74h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              34h] = 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]
[              34h] = sensor_number[ 8b]
[               7h] = entity_id[ 8b]
[               Ah] = 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]
[               3h] = sensor_type[ 8b]
[               9h] = 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]
[               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]
[               6h] = sensor_unit2.base_unit[ 8b]
[               0h] = sensor_unit3.modifier_unit[ 8b]
[               0h] = linearization[ 7b]
[               0h] = linearization.reserved[ 1b]
[               2h] = m_ls[ 8b]
[               0h] = tolerance[ 6b]
[               0h] = m_ms[ 2b]
[               0h] = b_ls[ 8b]
[               0h] = accuracy_ls[ 6b]
[               0h] = b_ms[ 2b]
[               0h] = sensor_direction[ 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]
[              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]
[              CBh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 50h 6Fh 77h 65h 72h 20h 4Dh 65h ]
[ 74h 65h 72h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              35h] = 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]
[              35h] = sensor_number[ 8b]
[               7h] = entity_id[ 8b]
[               Bh] = 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]
[               Ch] = 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]
[               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]
[               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]
[               0h] = 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]
[               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]
[               3h] = sensor_unit1.analog_data_format[ 2b]
[              58h] = 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] = sensor_direction[ 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]
[              C6h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 4Dh 65h 6Dh 6Fh 72h 79h 00h 00h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              36h] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              70h] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[               1h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              37h] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              73h] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[               4h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 34h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              38h] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              78h] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[               9h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 39h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              39h] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              7Bh] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[               Ch] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CDh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 32h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              3Ah] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              7Ch] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[               Dh] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              3Bh] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              7Fh] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[              10h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 34h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              3Ch] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              84h] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[              15h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 39h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              3Dh] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              87h] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[              18h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CDh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 32h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[               0h] = 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.settable_sensor[ 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]
[               3h] = 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] = sensor_direction[ 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 ]
=====================================================
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]
[               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.settable_sensor[ 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]
[               3h] = 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] = sensor_direction[ 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]
[              CAh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 48h 65h 61h 6Ch 74h 68h 20h 4Ch ]
[ 45h 44h 00h 00h 00h 00h 00h 00h ]
=====================================================
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]
[               3h] = sensor_number[ 8b]
[               Ah] = 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]
[               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]
[               6h] = sensor_unit2.base_unit[ 8b]
[               0h] = sensor_unit3.modifier_unit[ 8b]
[               0h] = linearization[ 7b]
[               0h] = linearization.reserved[ 1b]
[               5h] = m_ls[ 8b]
[               0h] = tolerance[ 6b]
[               0h] = m_ms[ 2b]
[               0h] = b_ls[ 8b]
[               0h] = accuracy_ls[ 6b]
[               0h] = b_ms[ 2b]
[               0h] = sensor_direction[ 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]
[              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]
[               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 ]
=====================================================
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]
[               4h] = 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] = sensor_direction[ 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 ]
=====================================================
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]
[               5h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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 ]
=====================================================
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]
[               6h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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 ]
=====================================================
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]
[               7h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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 ]
=====================================================
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]
[               8h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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 ]
=====================================================
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]
[               9h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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 ]
=====================================================
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]
[               Ah] = sensor_number[ 8b]
[               7h] = entity_id[ 8b]
[               7h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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 37h 00h 00h 00h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
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]
[               Bh] = sensor_number[ 8b]
[               7h] = entity_id[ 8b]
[               8h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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 38h 00h 00h 00h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[               Bh] = 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]
[               9h] = 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]
[               3h] = 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] = sensor_direction[ 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 ]
=====================================================
SDR Entity Association Record
=====================================================
[               Ch] = 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]
[               9h] = 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]
[               2h] = instance_id_contained_entity_range_1[ 8b]
[               7h] = entity_id_contained_entity_range_2[ 8b]
[               8h] = 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
=====================================================
[               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]
[               Dh] = sensor_number[ 8b]
[              40h] = 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] = sensor_direction[ 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]
[              2Eh] = upper_non_recoverable_threshold[ 8b]
[              2Ah] = 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]
[              D0h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 30h 31h 2Dh 49h 6Eh 6Ch 65h 74h ]
[ 20h 41h 6Dh 62h 69h 65h 6Eh 74h ]
=====================================================
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]
[               Eh] = sensor_number[ 8b]
[              41h] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              46h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 30h 32h 2Dh 43h 50h 55h 20h 31h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
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]
[               Fh] = sensor_number[ 8b]
[              41h] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              46h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 30h 33h 2Dh 43h 50h 55h 20h 32h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
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]
[              10h] = sensor_number[ 8b]
[              20h] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              57h] = 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]
[ 30h 34h 2Dh 50h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 2Dh 36h 00h 00h ]
=====================================================
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]
[              11h] = sensor_number[ 8b]
[              20h] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              57h] = 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]
[ 30h 35h 2Dh 50h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 37h 2Dh 31h 32h 00h ]
=====================================================
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]
[              12h] = sensor_number[ 8b]
[              20h] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              57h] = 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]
[ 30h 36h 2Dh 50h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 2Dh 36h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              13h] = 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]
[              13h] = sensor_number[ 8b]
[              20h] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              57h] = 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]
[ 30h 37h 2Dh 50h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 37h 2Dh 31h 32h 00h ]
=====================================================
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]
[              14h] = sensor_number[ 8b]
[              20h] = 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]
[               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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 30h 38h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              15h] = 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]
[              15h] = sensor_number[ 8b]
[              20h] = 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]
[               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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 30h 39h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              16h] = 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]
[              16h] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               7h] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 30h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              17h] = 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]
[              17h] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               8h] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 31h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              18h] = 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]
[              18h] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               9h] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 32h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              19h] = 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]
[              19h] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Ah] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 33h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              1Ah] = 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]
[              1Ah] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Bh] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 34h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              1Bh] = 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]
[              1Bh] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Ch] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 35h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              1Ch] = 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]
[              1Ch] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Dh] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 36h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              1Dh] = 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]
[              1Dh] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Eh] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 37h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              1Eh] = 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]
[              1Eh] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Fh] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 38h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              1Fh] = 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]
[              1Fh] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[              10h] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 39h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              20h] = 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]
[              20h] = sensor_number[ 8b]
[               4h] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              3Ch] = 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]
[ 32h 30h 2Dh 48h 44h 20h 4Dh 61h ]
[ 78h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              21h] = 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]
[              21h] = sensor_number[ 8b]
[              42h] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              69h] = 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]
[              CAh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 31h 2Dh 43h 68h 69h 70h 73h ]
[ 65h 74h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              22h] = 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]
[              22h] = sensor_number[ 8b]
[               Ah] = 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]
[               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] = sensor_direction[ 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]
[               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]
[              C6h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 32h 2Dh 50h 2Fh 53h 00h 00h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              23h] = 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]
[              23h] = sensor_number[ 8b]
[              13h] = 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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 33h 2Dh 56h 52h 20h 50h 31h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              24h] = 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]
[              24h] = sensor_number[ 8b]
[              13h] = 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]
[               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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 34h 2Dh 56h 52h 20h 50h 32h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              25h] = 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]
[              25h] = sensor_number[ 8b]
[              13h] = 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]
[               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] = sensor_direction[ 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]
[               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]
[              CDh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 35h 2Dh 56h 52h 20h 50h 31h ]
[ 20h 5Ah 6Fh 6Eh 65h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              26h] = 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]
[              26h] = sensor_number[ 8b]
[              13h] = 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]
[               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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              CCh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 36h 2Dh 56h 52h 20h 50h 31h ]
[ 20h 4Dh 65h 6Dh 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              27h] = 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]
[              27h] = sensor_number[ 8b]
[              13h] = 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]
[               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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              CCh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 37h 2Dh 56h 52h 20h 50h 31h ]
[ 20h 4Dh 65h 6Dh 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              28h] = 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]
[              28h] = sensor_number[ 8b]
[              13h] = 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]
[               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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              CCh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 38h 2Dh 56h 52h 20h 50h 32h ]
[ 20h 4Dh 65h 6Dh 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              29h] = 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]
[              29h] = sensor_number[ 8b]
[              13h] = entity_id[ 8b]
[               7h] = 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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              CCh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 39h 2Dh 56h 52h 20h 50h 32h ]
[ 20h 4Dh 65h 6Dh 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              2Ah] = 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]
[              2Ah] = sensor_number[ 8b]
[              28h] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              41h] = 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]
[ 33h 30h 2Dh 53h 75h 70h 65h 72h ]
[ 63h 61h 70h 20h 4Dh 61h 78h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              2Bh] = 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]
[              2Bh] = sensor_number[ 8b]
[               6h] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[              CBh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 31h 2Dh 69h 4Ch 4Fh 20h 5Ah ]
[ 6Fh 6Eh 65h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              2Ch] = 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]
[              2Ch] = sensor_number[ 8b]
[              42h] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              64h] = 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]
[              C6h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 32h 2Dh 4Ch 4Fh 4Dh 00h 00h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              2Dh] = 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]
[              2Dh] = sensor_number[ 8b]
[               Bh] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              64h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 33h 2Dh 50h 43h 49h 20h 31h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              2Eh] = 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]
[              2Eh] = sensor_number[ 8b]
[               Bh] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              64h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 34h 2Dh 50h 43h 49h 20h 32h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              2Fh] = 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]
[              2Fh] = sensor_number[ 8b]
[              10h] = 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] = sensor_direction[ 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]
[              4Bh] = upper_non_recoverable_threshold[ 8b]
[              46h] = 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]
[              CDh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 35h 2Dh 50h 43h 49h 20h 31h ]
[ 20h 5Ah 6Fh 6Eh 65h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              30h] = 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]
[              30h] = sensor_number[ 8b]
[              10h] = 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]
[               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] = sensor_direction[ 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]
[              4Bh] = upper_non_recoverable_threshold[ 8b]
[              46h] = 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]
[              CDh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 36h 2Dh 50h 43h 49h 20h 32h ]
[ 20h 5Ah 6Fh 6Eh 65h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              31h] = 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]
[              31h] = sensor_number[ 8b]
[               Bh] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              64h] = 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]
[              CBh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 37h 2Dh 4Ch 4Fh 4Dh 20h 43h ]
[ 61h 72h 64h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              32h] = 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]
[              32h] = sensor_number[ 8b]
[              42h] = 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]
[               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] = sensor_direction[ 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]
[              4Bh] = upper_non_recoverable_threshold[ 8b]
[              46h] = 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]
[ 33h 38h 2Dh 53h 79h 73h 74h 65h ]
[ 6Dh 20h 42h 6Fh 61h 72h 64h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              33h] = 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]
[              33h] = sensor_number[ 8b]
[               Dh] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 33h 39h 2Dh 53h 79h 73h 20h 45h ]
[ 78h 68h 61h 75h 73h 74h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              34h] = 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]
[              34h] = sensor_number[ 8b]
[               7h] = entity_id[ 8b]
[               Ah] = 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]
[               3h] = sensor_type[ 8b]
[               9h] = 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]
[               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]
[               6h] = sensor_unit2.base_unit[ 8b]
[               0h] = sensor_unit3.modifier_unit[ 8b]
[               0h] = linearization[ 7b]
[               0h] = linearization.reserved[ 1b]
[               2h] = m_ls[ 8b]
[               0h] = tolerance[ 6b]
[               0h] = m_ms[ 2b]
[               0h] = b_ls[ 8b]
[               0h] = accuracy_ls[ 6b]
[               0h] = b_ms[ 2b]
[               0h] = sensor_direction[ 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]
[              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]
[              CBh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 50h 6Fh 77h 65h 72h 20h 4Dh 65h ]
[ 74h 65h 72h 00h 00h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[              35h] = 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]
[              35h] = sensor_number[ 8b]
[               7h] = entity_id[ 8b]
[               Bh] = 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]
[               Ch] = 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]
[               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]
[               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]
[               0h] = 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]
[               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]
[               3h] = sensor_unit1.analog_data_format[ 2b]
[              58h] = 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] = sensor_direction[ 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]
[              C6h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 4Dh 65h 6Dh 6Fh 72h 79h 00h 00h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              36h] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              70h] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[               1h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              37h] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              73h] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[               4h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 34h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              38h] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              78h] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[               9h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 39h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              39h] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              7Bh] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[               Ch] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CDh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 32h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              3Ah] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              7Ch] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[               Dh] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              3Bh] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              7Fh] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[              10h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 34h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              3Ch] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              84h] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[              15h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 39h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              3Dh] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              87h] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[              18h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CDh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 32h 00h 00h 00h ]
=====================================================
SDR Full Sensor Record
=====================================================
[               0h] = 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.settable_sensor[ 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]
[               3h] = 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] = sensor_direction[ 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]
ID | Name             | Type         | Reading    | Units | Event
0  | UID Light        | OEM Reserved | N/A        | N/A   | 'OEM Event = 0000h'
=====================================================
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]
[               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.settable_sensor[ 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]
[               3h] = 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] = sensor_direction[ 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]
[              CAh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 48h 65h 61h 6Ch 74h 68h 20h 4Ch ]
[ 45h 44h 00h 00h 00h 00h 00h 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]
1  | Health LED       | OEM Reserved | N/A        | N/A   | 'OEM Event = 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]
[               3h] = sensor_number[ 8b]
[               Ah] = 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]
[               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]
[               6h] = sensor_unit2.base_unit[ 8b]
[               0h] = sensor_unit3.modifier_unit[ 8b]
[               0h] = linearization[ 7b]
[               0h] = linearization.reserved[ 1b]
[               5h] = m_ls[ 8b]
[               0h] = tolerance[ 6b]
[               0h] = m_ms[ 2b]
[               0h] = b_ls[ 8b]
[               0h] = accuracy_ls[ 6b]
[               0h] = b_ms[ 2b]
[               0h] = sensor_direction[ 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]
[              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]
[               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]
[               3h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              12h] = 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]
2  | Power Supply 1   | Power Supply | 90.00      | W     | 'Presence detected'
=====================================================
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]
[               4h] = 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] = sensor_direction[ 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]
[               4h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[               0h] = sensor_reading[ 8b]
[               0h] = reserved1[ 5b]
[               1h] = reading_state[ 1b]
[               0h] = sensor_scanning[ 1b]
[               0h] = all_event_messages[ 1b]
[               0h] = sensor_event_bitmask1[ 8b]
[               1h] = sensor_event_bitmask2[ 7b]
[               1h] = reserved2[ 1b]
Sensor reading/event bitmask not available: sensor reading unavailable
3  | Fan 1            | Fan          | N/A        | N/A   | N/A
=====================================================
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]
[               5h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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]
[               5h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              32h] = 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]
4  | Fan 2            | Fan          | 19.60      | %     | 'transition to 
Running'
=====================================================
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]
[               6h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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]
[               6h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              46h] = 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]
5  | Fan 3            | Fan          | 27.44      | %     | 'transition to 
Running'
=====================================================
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]
[               7h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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]
[               7h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              46h] = 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]
6  | Fan 4            | Fan          | 27.44      | %     | 'transition to 
Running'
=====================================================
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]
[               8h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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]
[               8h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              46h] = 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]
7  | Fan 5            | Fan          | 27.44      | %     | 'transition to 
Running'
=====================================================
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]
[               9h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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]
[               9h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              46h] = 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  | Fan 6            | Fan          | 27.44      | %     | 'transition to 
Running'
=====================================================
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]
[               Ah] = sensor_number[ 8b]
[               7h] = entity_id[ 8b]
[               7h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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 37h 00h 00h 00h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[               Ah] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              32h] = 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  | Fan 7            | Fan          | 19.60      | %     | 'transition to 
Running'
=====================================================
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]
[               Bh] = sensor_number[ 8b]
[               7h] = entity_id[ 8b]
[               8h] = 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]
[               1h] = 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]
[               1h] = 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] = sensor_direction[ 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 38h 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]
[              32h] = 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 | Fan 8            | Fan          | 19.60      | %     | 'transition to 
Running'
=====================================================
SDR Full Sensor Record
=====================================================
[               Bh] = 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]
[               9h] = 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]
[               3h] = 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] = sensor_direction[ 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]
[               Ch] = 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]
11 | Fans             | Fan          | N/A        | N/A   | 'Fully Redundant'
=====================================================
SDR Entity Association Record
=====================================================
[               Ch] = 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]
[               9h] = 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]
[               2h] = instance_id_contained_entity_range_1[ 8b]
[               7h] = entity_id_contained_entity_range_2[ 8b]
[               8h] = 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
=====================================================
[               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]
[               Dh] = sensor_number[ 8b]
[              40h] = 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] = sensor_direction[ 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]
[              2Eh] = upper_non_recoverable_threshold[ 8b]
[              2Ah] = 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]
[              D0h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 30h 31h 2Dh 49h 6Eh 6Ch 65h 74h ]
[ 20h 41h 6Dh 62h 69h 65h 6Eh 74h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[               Dh] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              19h] = 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]
13 | 01-Inlet Ambient | Temperature  | 25.00      | C     | 'OK'
=====================================================
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]
[               Eh] = sensor_number[ 8b]
[              41h] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              46h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 30h 32h 2Dh 43h 50h 55h 20h 31h ]
[ 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]
[              28h] = 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]
14 | 02-CPU 1         | Temperature  | 40.00      | C     | 'OK'
=====================================================
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]
[               Fh] = sensor_number[ 8b]
[              41h] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              46h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 30h 33h 2Dh 43h 50h 55h 20h 32h ]
[ 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]
[              28h] = 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]
15 | 03-CPU 2         | Temperature  | 40.00      | C     | 'OK'
=====================================================
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]
[              10h] = sensor_number[ 8b]
[              20h] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              57h] = 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]
[ 30h 34h 2Dh 50h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 2Dh 36h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              10h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              26h] = 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]
16 | 04-P1 DIMM 1-6   | Temperature  | 38.00      | C     | 'OK'
=====================================================
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]
[              11h] = sensor_number[ 8b]
[              20h] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              57h] = 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]
[ 30h 35h 2Dh 50h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 37h 2Dh 31h 32h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              11h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              27h] = 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]
17 | 05-P1 DIMM 7-12  | Temperature  | 39.00      | C     | 'OK'
=====================================================
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]
[              12h] = sensor_number[ 8b]
[              20h] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              57h] = 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]
[ 30h 36h 2Dh 50h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 2Dh 36h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              12h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              22h] = 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]
18 | 06-P2 DIMM 1-6   | Temperature  | 34.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              13h] = 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]
[              13h] = sensor_number[ 8b]
[              20h] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              57h] = 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]
[ 30h 37h 2Dh 50h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 37h 2Dh 31h 32h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              13h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              1Ch] = 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]
19 | 07-P2 DIMM 7-12  | Temperature  | 28.00      | C     | 'OK'
=====================================================
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]
[              14h] = sensor_number[ 8b]
[              20h] = 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]
[               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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 30h 38h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              14h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              26h] = 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]
20 | 08-P1 Mem Zone   | Temperature  | 38.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              15h] = 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]
[              15h] = sensor_number[ 8b]
[              20h] = 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]
[               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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 30h 39h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              15h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              26h] = 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]
21 | 09-P1 Mem Zone   | Temperature  | 38.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              16h] = 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]
[              16h] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               7h] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 30h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              16h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              27h] = 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]
22 | 10-P1 Mem Zone   | Temperature  | 39.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              17h] = 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]
[              17h] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               8h] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 31h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              17h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              2Ah] = 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]
23 | 11-P1 Mem Zone   | Temperature  | 42.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              18h] = 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]
[              18h] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               9h] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 32h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              18h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              28h] = 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]
24 | 12-P1 Mem Zone   | Temperature  | 40.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              19h] = 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]
[              19h] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Ah] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 33h 2Dh 50h 31h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              19h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              27h] = 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]
25 | 13-P1 Mem Zone   | Temperature  | 39.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              1Ah] = 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]
[              1Ah] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Bh] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 34h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              1Ah] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              24h] = 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]
26 | 14-P2 Mem Zone   | Temperature  | 36.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              1Bh] = 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]
[              1Bh] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Ch] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 35h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              1Bh] = 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]
27 | 15-P2 Mem Zone   | Temperature  | 35.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              1Ch] = 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]
[              1Ch] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Dh] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 36h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              1Ch] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              22h] = 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]
28 | 16-P2 Mem Zone   | Temperature  | 34.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              1Dh] = 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]
[              1Dh] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Eh] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 37h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              1Dh] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              20h] = 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]
29 | 17-P2 Mem Zone   | Temperature  | 32.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              1Eh] = 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]
[              1Eh] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[               Fh] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 38h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              1Eh] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              1Fh] = 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]
30 | 18-P2 Mem Zone   | Temperature  | 31.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              1Fh] = 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]
[              1Fh] = sensor_number[ 8b]
[              20h] = entity_id[ 8b]
[              10h] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 31h 39h 2Dh 50h 32h 20h 4Dh 65h ]
[ 6Dh 20h 5Ah 6Fh 6Eh 65h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              1Fh] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              1Eh] = 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]
31 | 19-P2 Mem Zone   | Temperature  | 30.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              20h] = 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]
[              20h] = sensor_number[ 8b]
[               4h] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              3Ch] = 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]
[ 32h 30h 2Dh 48h 44h 20h 4Dh 61h ]
[ 78h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              20h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[               0h] = sensor_reading[ 8b]
[               0h] = reserved1[ 5b]
[               1h] = reading_state[ 1b]
[               0h] = sensor_scanning[ 1b]
[               0h] = all_event_messages[ 1b]
[               0h] = sensor_event_bitmask1[ 8b]
[               0h] = sensor_event_bitmask2[ 7b]
[               1h] = reserved2[ 1b]
Sensor reading/event bitmask not available: sensor reading unavailable
32 | 20-HD Max        | Temperature  | N/A        | C     | N/A
=====================================================
SDR Full Sensor Record
=====================================================
[              21h] = 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]
[              21h] = sensor_number[ 8b]
[              42h] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              69h] = 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]
[              CAh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 31h 2Dh 43h 68h 69h 70h 73h ]
[ 65h 74h 00h 00h 00h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              21h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              2Eh] = 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]
33 | 21-Chipset       | Temperature  | 46.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              22h] = 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]
[              22h] = sensor_number[ 8b]
[               Ah] = 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]
[               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] = sensor_direction[ 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]
[               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]
[              C6h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 32h 2Dh 50h 2Fh 53h 00h 00h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              22h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              20h] = 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]
34 | 22-P/S           | Temperature  | 32.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              23h] = 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]
[              23h] = sensor_number[ 8b]
[              13h] = 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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 33h 2Dh 56h 52h 20h 50h 31h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              23h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              2Bh] = 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]
35 | 23-VR P1         | Temperature  | 43.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              24h] = 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]
[              24h] = sensor_number[ 8b]
[              13h] = 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]
[               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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 34h 2Dh 56h 52h 20h 50h 32h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              24h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              1Ch] = 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]
36 | 24-VR P2         | Temperature  | 28.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              25h] = 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]
[              25h] = sensor_number[ 8b]
[              13h] = 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]
[               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] = sensor_direction[ 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]
[               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]
[              CDh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 35h 2Dh 56h 52h 20h 50h 31h ]
[ 20h 5Ah 6Fh 6Eh 65h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              25h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              2Dh] = 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]
37 | 25-VR P1 Zone    | Temperature  | 45.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              26h] = 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]
[              26h] = sensor_number[ 8b]
[              13h] = 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]
[               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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              CCh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 36h 2Dh 56h 52h 20h 50h 31h ]
[ 20h 4Dh 65h 6Dh 00h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              26h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              28h] = 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]
38 | 26-VR P1 Mem     | Temperature  | 40.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              27h] = 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]
[              27h] = sensor_number[ 8b]
[              13h] = 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]
[               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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              CCh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 37h 2Dh 56h 52h 20h 50h 31h ]
[ 20h 4Dh 65h 6Dh 00h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              27h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              26h] = 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]
39 | 27-VR P1 Mem     | Temperature  | 38.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              28h] = 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]
[              28h] = sensor_number[ 8b]
[              13h] = 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]
[               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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              CCh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 38h 2Dh 56h 52h 20h 50h 32h ]
[ 20h 4Dh 65h 6Dh 00h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              28h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              1Dh] = 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]
40 | 28-VR P2 Mem     | Temperature  | 29.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              29h] = 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]
[              29h] = sensor_number[ 8b]
[              13h] = entity_id[ 8b]
[               7h] = 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] = sensor_direction[ 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]
[              78h] = upper_non_recoverable_threshold[ 8b]
[              73h] = 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]
[              CCh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 32h 39h 2Dh 56h 52h 20h 50h 32h ]
[ 20h 4Dh 65h 6Dh 00h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              29h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              1Ch] = 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]
41 | 29-VR P2 Mem     | Temperature  | 28.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              2Ah] = 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]
[              2Ah] = sensor_number[ 8b]
[              28h] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              41h] = 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]
[ 33h 30h 2Dh 53h 75h 70h 65h 72h ]
[ 63h 61h 70h 20h 4Dh 61h 78h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              2Ah] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[               0h] = sensor_reading[ 8b]
[               0h] = reserved1[ 5b]
[               1h] = reading_state[ 1b]
[               0h] = sensor_scanning[ 1b]
[               0h] = all_event_messages[ 1b]
[               0h] = sensor_event_bitmask1[ 8b]
[               0h] = sensor_event_bitmask2[ 7b]
[               1h] = reserved2[ 1b]
Sensor reading/event bitmask not available: sensor reading unavailable
42 | 30-Supercap Max  | Temperature  | N/A        | C     | N/A
=====================================================
SDR Full Sensor Record
=====================================================
[              2Bh] = 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]
[              2Bh] = sensor_number[ 8b]
[               6h] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[              CBh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 31h 2Dh 69h 4Ch 4Fh 20h 5Ah ]
[ 6Fh 6Eh 65h 00h 00h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              2Bh] = 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]
43 | 31-iLO Zone      | Temperature  | 35.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              2Ch] = 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]
[              2Ch] = sensor_number[ 8b]
[              42h] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              64h] = 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]
[              C6h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 32h 2Dh 4Ch 4Fh 4Dh 00h 00h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              2Ch] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[               0h] = sensor_reading[ 8b]
[               0h] = reserved1[ 5b]
[               1h] = reading_state[ 1b]
[               0h] = sensor_scanning[ 1b]
[               0h] = all_event_messages[ 1b]
[               0h] = sensor_event_bitmask1[ 8b]
[               0h] = sensor_event_bitmask2[ 7b]
[               1h] = reserved2[ 1b]
Sensor reading/event bitmask not available: sensor reading unavailable
44 | 32-LOM           | Temperature  | N/A        | C     | N/A
=====================================================
SDR Full Sensor Record
=====================================================
[              2Dh] = 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]
[              2Dh] = sensor_number[ 8b]
[               Bh] = 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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              64h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 33h 2Dh 50h 43h 49h 20h 31h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              2Dh] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[               0h] = sensor_reading[ 8b]
[               0h] = reserved1[ 5b]
[               1h] = reading_state[ 1b]
[               0h] = sensor_scanning[ 1b]
[               0h] = all_event_messages[ 1b]
[               0h] = sensor_event_bitmask1[ 8b]
[               0h] = sensor_event_bitmask2[ 7b]
[               1h] = reserved2[ 1b]
Sensor reading/event bitmask not available: sensor reading unavailable
45 | 33-PCI 1         | Temperature  | N/A        | C     | N/A
=====================================================
SDR Full Sensor Record
=====================================================
[              2Eh] = 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]
[              2Eh] = sensor_number[ 8b]
[               Bh] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              64h] = 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]
[              C8h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 34h 2Dh 50h 43h 49h 20h 32h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              2Eh] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[               0h] = sensor_reading[ 8b]
[               0h] = reserved1[ 5b]
[               1h] = reading_state[ 1b]
[               0h] = sensor_scanning[ 1b]
[               0h] = all_event_messages[ 1b]
[               0h] = sensor_event_bitmask1[ 8b]
[               0h] = sensor_event_bitmask2[ 7b]
[               1h] = reserved2[ 1b]
Sensor reading/event bitmask not available: sensor reading unavailable
46 | 34-PCI 2         | Temperature  | N/A        | C     | N/A
=====================================================
SDR Full Sensor Record
=====================================================
[              2Fh] = 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]
[              2Fh] = sensor_number[ 8b]
[              10h] = 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] = sensor_direction[ 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]
[              4Bh] = upper_non_recoverable_threshold[ 8b]
[              46h] = 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]
[              CDh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 35h 2Dh 50h 43h 49h 20h 31h ]
[ 20h 5Ah 6Fh 6Eh 65h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              2Fh] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              20h] = 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]
47 | 35-PCI 1 Zone    | Temperature  | 32.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              30h] = 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]
[              30h] = sensor_number[ 8b]
[              10h] = 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]
[               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] = sensor_direction[ 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]
[              4Bh] = upper_non_recoverable_threshold[ 8b]
[              46h] = 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]
[              CDh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 36h 2Dh 50h 43h 49h 20h 32h ]
[ 20h 5Ah 6Fh 6Eh 65h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              30h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              21h] = 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]
48 | 36-PCI 2 Zone    | Temperature  | 33.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              31h] = 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]
[              31h] = sensor_number[ 8b]
[               Bh] = 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]
[               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] = sensor_direction[ 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]
[               0h] = upper_non_recoverable_threshold[ 8b]
[              64h] = 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]
[              CBh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 33h 37h 2Dh 4Ch 4Fh 4Dh 20h 43h ]
[ 61h 72h 64h 00h 00h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              31h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[               0h] = sensor_reading[ 8b]
[               0h] = reserved1[ 5b]
[               1h] = reading_state[ 1b]
[               0h] = sensor_scanning[ 1b]
[               0h] = all_event_messages[ 1b]
[               0h] = sensor_event_bitmask1[ 8b]
[               0h] = sensor_event_bitmask2[ 7b]
[               1h] = reserved2[ 1b]
Sensor reading/event bitmask not available: sensor reading unavailable
49 | 37-LOM Card      | Temperature  | N/A        | C     | N/A
=====================================================
SDR Full Sensor Record
=====================================================
[              32h] = 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]
[              32h] = sensor_number[ 8b]
[              42h] = 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]
[               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] = sensor_direction[ 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]
[              4Bh] = upper_non_recoverable_threshold[ 8b]
[              46h] = 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]
[ 33h 38h 2Dh 53h 79h 73h 74h 65h ]
[ 6Dh 20h 42h 6Fh 61h 72h 64h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              32h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              1Ah] = 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]
50 | 38-System Board  | Temperature  | 26.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              33h] = 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]
[              33h] = sensor_number[ 8b]
[               Dh] = 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] = sensor_direction[ 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]
[              5Fh] = upper_non_recoverable_threshold[ 8b]
[              5Ah] = 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]
[ 33h 39h 2Dh 53h 79h 73h 20h 45h ]
[ 78h 68h 61h 75h 73h 74h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              33h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              28h] = 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]
51 | 39-Sys Exhaust   | Temperature  | 40.00      | C     | 'OK'
=====================================================
SDR Full Sensor Record
=====================================================
[              34h] = 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]
[              34h] = sensor_number[ 8b]
[               7h] = entity_id[ 8b]
[               Ah] = 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]
[               3h] = sensor_type[ 8b]
[               9h] = 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]
[               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]
[               6h] = sensor_unit2.base_unit[ 8b]
[               0h] = sensor_unit3.modifier_unit[ 8b]
[               0h] = linearization[ 7b]
[               0h] = linearization.reserved[ 1b]
[               2h] = m_ls[ 8b]
[               0h] = tolerance[ 6b]
[               0h] = m_ms[ 2b]
[               0h] = b_ls[ 8b]
[               0h] = accuracy_ls[ 6b]
[               0h] = b_ms[ 2b]
[               0h] = sensor_direction[ 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]
[              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]
[              CBh] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 50h 6Fh 77h 65h 72h 20h 4Dh 65h ]
[ 74h 65h 72h 00h 00h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              34h] = sensor_number[ 8b]
=====================================================
Get Sensor Reading Response
=====================================================
[              2Dh] = cmd[ 8b]
[               0h] = comp_code[ 8b]
[              2Dh] = 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]
52 | Power Meter      | Current      | 90.00      | W     | 'Device Enabled'
=====================================================
SDR Full Sensor Record
=====================================================
[              35h] = 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]
[              35h] = sensor_number[ 8b]
[               7h] = entity_id[ 8b]
[               Bh] = 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]
[               Ch] = 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]
[               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]
[               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]
[               0h] = 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]
[               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]
[               3h] = sensor_unit1.analog_data_format[ 2b]
[              58h] = 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] = sensor_direction[ 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]
[              C6h] = id_string_type_length_code[ 8b]
[  BYTE ARRAY ... ] = id_string[16B]
[ 4Dh 65h 6Dh 6Fh 72h 79h 00h 00h ]
[ 00h 00h 00h 00h 00h 00h 00h 00h ]
=====================================================
Get Sensor Reading Request
=====================================================
[              2Dh] = cmd[ 8b]
[              35h] = 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]
[              40h] = sensor_event_bitmask1[ 8b]
[               0h] = sensor_event_bitmask2[ 7b]
[               1h] = reserved2[ 1b]
53 | Memory           | Memory       | N/A        | N/A   | 'Presence detected'
=====================================================
SDR FRU Device Locator Record
=====================================================
[              36h] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              70h] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[               1h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              37h] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              73h] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[               4h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 34h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              38h] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              78h] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[               9h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 39h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              39h] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              7Bh] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[               Ch] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CDh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 31h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 32h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              3Ah] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              7Ch] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[               Dh] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              3Bh] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              7Fh] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[              10h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 34h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              3Ch] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              84h] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[              15h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CCh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 39h 00h 00h 00h 00h ]
=====================================================
SDR FRU Device Locator Record
=====================================================
[              3Dh] = record_id[16b]
[               1h] = sdr_version_major[ 4b]
[               5h] = sdr_version_minor[ 4b]
[              11h] = record_type[ 8b]
[              1Bh] = record_length[ 8b]
[               0h] = device_access_address.reserved[ 1b]
[              10h] = device_access_address[ 7b]
[              87h] = logical_fru_device_device_slave_address[ 8b]
[               0h] = private_bus_id[ 3b]
[               0h] = lun_for_master_write_read_fru_command[ 2b]
[               0h] = logical_physical_access_lun_bus_id.reserved[ 2b]
[               1h] = logical_physical_fru_device[ 1b]
[               0h] = channel_number.reserved[ 4b]
[               0h] = channel_number[ 4b]
[               0h] = reserved[ 8b]
[              10h] = device_type[ 8b]
[               1h] = device_type_modifier[ 8b]
[              20h] = fru_entity_id[ 8b]
[              18h] = fru_entity_instance[ 8b]
[               0h] = oem[ 8b]
[              CDh] = device_id_string_type_length[ 8b]
[  BYTE ARRAY ... ] = device_id_string[16B]
[ 43h 50h 55h 20h 32h 20h 44h 49h ]
[ 4Dh 4Dh 20h 31h 32h 00h 00h 00h ]

-----Original Message-----
From: Albert Chu [mailto:address@hidden
Sent: Thursday, March 14, 2013 5:35 PM
To: Stephen Abbene
Cc: address@hidden
Subject: Re: [Freeipmi-users] ipmi-sensors missing data on HP Gen7/8 servers

Hi Stephen,

Could you please try the "discretereading" workaround (i.e. -W 
discretereading).  There's a description of the issue in the manpage about the 
issue and it's only been seen on HP systems.  I believe HP has acknowledged the 
issue, but due to legacy reasons I don't believe they want to change it.

If that doesn't work, please send the --debug output.

Al

On Thu, 2013-03-14 at 16:55 -0700, Stephen Abbene wrote:
> Hello,
>
>
>
> Today I installed  freeipmi 1.2.5 on several HP gen7 and Gen8 servers and 
> have noticed that all the systems are missing the RPM from the fans and the 
> power meter information.  Is there a way I can obtain this information?  I 
> can provide the output from --debug or any other information you may need.
>
>
>
> Here are some of the specs of one of the systems I am testing, I can provide 
> more information if it is required.
>
> . HP Proliant DL160 G8
>
> . CentOS 5.7
>
> . 2x Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz
>
> . 1x Power Supply (detected)
>
> . 8x fans (detected)
>
>
>
> I have included the output of ` ipmi-sensors --entity-sensor-names`  and 
> `bmc-info` from a HP dl160 Gen8 below.
>
>
>
> # ipmi-sensors --entity-sensor-names
>
> ID | Name                                            | Type         | Reading 
>    | Units | Event
>
> 0  | System Chassis 1 UID Light       | OEM Reserved | N/A        | N/A   | 
> 'OEM Event = 0000h'
>
> 1  | System Chassis 2 Health LED    | OEM Reserved | N/A        | N/A   | 
> 'OEM Event = 0000h'
>
> 2  | Power Supply 1 Power Supply 1         | Power Supply | N/A        | N/A  
>  | 'Presence detected'
>
> 3  | System Board 1 Fan 1                            | Fan          | N/A     
>    | N/A   | N/A
>
> 4  | System Board 2 Fan 2                            | Fan          | N/A     
>    | N/A   | 'transition to Running'
>
> 5  | System Board 3 Fan 3                            | Fan          | N/A     
>    | N/A   | 'transition to Running'
>
> 6  | System Board 4 Fan 4                            | Fan          | N/A     
>    | N/A   | 'transition to Running'
>
> 7  | System Board 5 Fan 5                            | Fan          | N/A     
>    | N/A   | 'transition to Running'
>
> 8  | System Board 6 Fan 6                            | Fan          | N/A     
>    | N/A   | 'transition to Running'
>
> 9  | System Board 7 Fan 7                            | Fan          | N/A     
>    | N/A   | 'transition to Running'
>
> 10 | System Board 8 Fan 8                            | Fan          | N/A     
>    | N/A   | 'transition to Running'
>
> 11 | System Board 9 Fans                             | Fan          | N/A     
>    | N/A   | 'Fully Redundant'
>
> 13 | Air Inlet 01-Inlet Ambient                      | Temperature  | 25.00   
>    | C     | 'OK'
>
> 14 | Processor 1 02-CPU 1                            | Temperature  | 40.00   
>    | C     | 'OK'
>
> 15 | Processor 2 03-CPU 2                            | Temperature  | 40.00   
>    | C     | 'OK'
>
> 16 | Memory Device 1 04-P1 DIMM 1-6                  | Temperature  | 38.00   
>    | C     | 'OK'
>
> 17 | Memory Device 2 05-P1 DIMM 7-12                 | Temperature  | 39.00   
>    | C     | 'OK'
>
> 18 | Memory Device 3 06-P2 DIMM 1-6                  | Temperature  | 34.00   
>    | C     | 'OK'
>
> 19 | Memory Device 4 07-P2 DIMM 7-12                 | Temperature  | 29.00   
>    | C     | 'OK'
>
> 20 | Memory Device 5 08-P1 Mem Zone                  | Temperature  | 38.00   
>    | C     | 'OK'
>
> 21 | Memory Device 6 09-P1 Mem Zone                  | Temperature  | 38.00   
>    | C     | 'OK'
>
> 22 | Memory Device 7 10-P1 Mem Zone                  | Temperature  | 39.00   
>    | C     | 'OK'
>
> 23 | Memory Device 8 11-P1 Mem Zone                  | Temperature  | 42.00   
>    | C     | 'OK'
>
> 24 | Memory Device 9 12-P1 Mem Zone                  | Temperature  | 40.00   
>    | C     | 'OK'
>
> 25 | Memory Device 10 13-P1 Mem Zone                 | Temperature  | 39.00   
>    | C     | 'OK'
>
> 26 | Memory Device 11 14-P2 Mem Zone                 | Temperature  | 36.00   
>    | C     | 'OK'
>
> 27 | Memory Device 12 15-P2 Mem Zone                 | Temperature  | 35.00   
>    | C     | 'OK'
>
> 28 | Memory Device 13 16-P2 Mem Zone                 | Temperature  | 34.00   
>    | C     | 'OK'
>
> 29 | Memory Device 14 17-P2 Mem Zone                 | Temperature  | 33.00   
>    | C     | 'OK'
>
> 30 | Memory Device 15 18-P2 Mem Zone                 | Temperature  | 31.00   
>    | C     | 'OK'
>
> 31 | Memory Device 16 19-P2 Mem Zone                 | Temperature  | 30.00   
>    | C     | 'OK'
>
> 32 | Disk 20-HD Max                                                      | 
> Temperature  | N/A        | C     | N/A
>
> 33 | System Board 1 21-Chipset                       | Temperature  | 46.00   
>    | C     | 'OK'
>
> 34 | Power Supply 2 22-P/S                            | Temperature  | 32.00  
>     | C     | 'OK'
>
> 35 | Power Unit 1 23-VR P1                           | Temperature  | 43.00   
>    | C     | 'OK'
>
> 36 | Power Unit 2 24-VR P2                           | Temperature  | 28.00   
>    | C     | 'OK'
>
> 37 | Power Unit 3 25-VR P1 Zone                      | Temperature  | 45.00   
>    | C     | 'OK'
>
> 38 | Power Unit 4 26-VR P1 Mem                       | Temperature  | 40.00   
>    | C     | 'OK'
>
> 39 | Power Unit 5 27-VR P1 Mem                       | Temperature  | 38.00   
>    | C     | 'OK'
>
> 40 | Power Unit 6 28-VR P2 Mem                                              | 
> Temperature  | 30.00      | C     | 'OK'
>
> 41 | Power Unit 7 29-VR P2 Mem                                        | 
> Temperature  | 28.00      | C     | 'OK'
>
> 42 | Battery 30-Supercap Max                                              | 
> Temperature  | N/A        | C     | N/A
>
> 43 | System Management Module 31-iLO Zone            | Temperature  | 35.00   
>    | C     | 'OK'
>
> 44 | System Board 2 32-LOM                                             | 
> Temperature  | N/A        | C     | N/A
>
> 45 | Add-in Card 1 33-PCI 1                          | Temperature  | N/A     
>    | C     | N/A
>
> 46 | Add-in Card 2 34-PCI 2                          | Temperature  | N/A     
>    | C     | N/A
>
> 47 | System Internal Expansion Board 1 35-PCI 1 Zone | Temperature  | 33.00   
>    | C     | 'OK'
>
> 48 | System Internal Expansion Board 2 36-PCI 2 Zone | Temperature  | 33.00   
>    | C     | 'OK'
>
> 49 | Add-in Card 3 37-LOM Card                       | Temperature  | N/A     
>    | C     | N/A
>
> 50 | System Board 3 38-System Board                  | Temperature  | 26.00   
>    | C     | 'OK'
>
> 51 | Back Panel Board 39-Sys Exhaust                 | Temperature  | 40.00   
>    | C     | 'OK'
>
> 52 | System Board 10 Power Meter                     | Current      | N/A     
>    | N/A   | 'Device Enabled'
>
> 53 | System Board 11 Memory                          | Memory       | N/A     
>    | N/A   | 'Presence detected'
>
>
> # bmc-info
>
> Device ID             : 19
>
> Device Revision       : 1
>
> Device SDRs           : unsupported
>
> Firmware Revision     : 1.10
>
> Device Available      : yes (normal operation)
>
> IPMI Version          : 2.0
>
> Sensor Device         : supported
>
> SDR Repository Device : supported
>
> SEL Device            : supported
>
> FRU Inventory Device  : supported
>
> IPMB Event Receiver   : unsupported
>
> IPMB Event Generator  : unsupported
>
> Bridge                : unsupported
>
> Chassis Device        : supported
>
> Manufacturer ID       : Hewlett-Packard (11)
>
> Product ID            : 8192
>
>
>
> Channel Information
>
>
>
> Channel Number       : 0
>
> Medium Type          : IPMB (I2C)
>
> Protocol Type        : IPMB-1.0
>
> Active Session Count : 0
>
> Session Support      : session-less
>
> Vendor ID            : Intelligent Platform Management Interface forum (7154)
>
>
>
> Channel Number       : 2
>
> Medium Type          : 802.3 LAN
>
> Protocol Type        : IPMB-1.0
>
> Active Session Count : 0
>
> Session Support      : multi-session
>
> Vendor ID            : Intelligent Platform Management Interface forum (7154)
>
>
>
> Channel Number       : 7
>
> Medium Type          : OEM
>
> Protocol Type        : KCS
>
> Active Session Count : 0
>
> Session Support      : session-less
>
> Vendor ID            : Intelligent Platform Management Interface forum (7154)
>
> Thanks,
> --Stephen Abbene
>
> _______________________________________________
> Freeipmi-users mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/freeipmi-users
--
Albert Chu
address@hidden
Computer Scientist
High Performance Systems Division
Lawrence Livermore National Laboratory





reply via email to

[Prev in Thread] Current Thread [Next in Thread]