freeipmi-users
[Top][All Lists]
Advanced

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

Re: [Freeipmi-users] Freeipmi 1.1.6 ipmi-sensors ipmi_sdr_cache_create:


From: Albert Chu
Subject: Re: [Freeipmi-users] Freeipmi 1.1.6 ipmi-sensors ipmi_sdr_cache_create: SDR record count invalid
Date: Tue, 03 Jul 2012 11:18:56 -0700

Hi,

What motherboard is this?  It appears that your motherboard has more SDR
records in its firmware that it's information suggests.

here it says it has 36 (24h = 36)

[              24h] = record_count[16b]

but it's finding greater than 36.

I can probably add a workaround for this and give you a beta to try.

Al

On Mon, 2012-07-02 at 23:16 -0700, 发明田 wrote:
> Hoping that you can offer advice as to what's wrong.
> 
> Thanks.
> 
> address@hidden ~]# /usr/local/sbin/ipmi-sensors -V ipmi-sensors - 1.1.6
> Copyright (C) 2003-2012 FreeIPMI Core Team This program is free software;
> you may redistribute it under the terms of the GNU General Public License.
> This program has absolutely no warranty. address@hidden ~]#
> /usr/local/sbin/ipmi-sensors -qv Caching SDR repository information:
> /root/.freeipmi/sdr-cache/sdr-cache-localhost.localhost Caching SDR record
> 36 of 36 (current record ID 36) ipmi_sdr_cache_create: SDR record count
> invalid address@hidden ~]# /usr/local/sbin/ipmi-sensors Caching SDR
> repository information:
> /root/.freeipmi/sdr-cache/sdr-cache-localhost.localhost Caching SDR record
> 36 of 36 (current record ID 36) ipmi_sdr_cache_create: SDR record count
> invalid address@hidden ~]# ls -rlth
> /root/.freeipmi/sdr-cache/sdr-cache-localhost.localhost ls:
> /root/.freeipmi/sdr-cache/sdr-cache-localhost.localhost: No such file or
> directory
> 
> address@hidden ~]# /usr/local/sbin/ipmi-sensors --debug
> Caching SDR repository information:
> /root/.freeipmi/sdr-cache/sdr-cache-localhost.localhost
> =====================================================
> 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]
> [              24h] = record_count[16b]
> [            1F10h] = free_space[16b]
> [               0h] = most_recent_addition_timestamp[32b]
> [               0h] = most_recent_erase_timestamp[32b]
> [               1h] = get_sdr_repository_allocation_info_command_supported[
> 1b]
> [               1h] = reserve_sdr_repository_command_supported[ 1b]
> [               1h] = partial_add_sdr_command_supported[ 1b]
> [               0h] = delete_sdr_command_supported[ 1b]
> [               0h] = reserved[ 1b]
> [               0h] =
> modal_non_modal_sdr_repository_update_operation_supported[ 2b]
> [               0h] = overflow_flag[ 1b]
> =====================================================
> Reserve SDR Repository Request
> =====================================================
> [              22h] = cmd[ 8b]
> =====================================================
> Reserve SDR Repository Response
> =====================================================
> [              22h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [            1A8Dh] = reservation_id[16b]
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [               0h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [               2h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[23B]
> [ 01h 00h 51h 12h 12h 20h 00h 00h ]
> [ FFh 00h 00h 00h 00h 01h 00h C7h ]
> [ 41h 53h 54h 32h 30h 35h 30h ]
> =====================================================
> SDR Management Controller Device Locator Record
> =====================================================
> [               1h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [              12h] = record_type[ 8b]
> [              12h] = record_length[ 8b]
> [               0h] = device_slave_address.reserved[ 1b]
> [              10h] = device_slave_address[ 7b]
> [               0h] = channel_number[ 4b]
> [               0h] = channel_number.reserved[ 4b]
> [               0h] = global_initialization.event_message_generation[ 2b]
> [               0h] =
> global_initialization.log_initialization_agent_errors[ 1b]
> [               0h] =
> global_initialization.controller_logs_initialization_agent_errors[ 1b]
> [               0h] = power_state_notification.reserved[ 1b]
> [               0h] = power_state_notification.controller[ 1b]
> [               0h] =
> power_state_notification.acpi_device_power_state_notification[ 1b]
> [               0h] =
> power_state_notification.acpi_system_power_state_notification[ 1b]
> [               1h] = device_capabilities.sensor_device[ 1b]
> [               1h] = device_capabilities.sdr_repository_device[ 1b]
> [               1h] = device_capabilities.sel_device[ 1b]
> [               1h] = device_capabilities.fru_inventory_device[ 1b]
> [               1h] = device_capabilities.ipmb_event_receiver[ 1b]
> [               1h] = device_capabilities.ipmb_event_generator[ 1b]
> [               1h] = device_capabilities.bridge[ 1b]
> [               1h] = device_capabilities.chassis_device[ 1b]
> [               0h] = reserved[24b]
> [               0h] = entity_id[ 8b]
> [               1h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               0h] = oem[ 8b]
> [              C7h] = device_id_string_type_length[ 8b]
> [  30353032545341h] = device_id_string[56b]
> Caching SDR record 1 of 36 (current record ID 0)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [               2h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [               3h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[54B]
> [ 02h 00h 51h 01h 31h 20h 00h 04h ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 46h 32h 5Fh 05h 50h 40h 3Ah 0Ah ]
> [ 10h 15h 01h 01h 00h 00h 00h C6h ]
> [ 50h 43h 49h 45h 5Fh 31h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [               2h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              31h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [              46h] = normal_maximum[ 8b]
> [              32h] = normal_minimum[ 8b]
> [              5Fh] = sensor_maximum_reading[ 8b]
> [               5h] = sensor_minimum_reading[ 8b]
> [              50h] = upper_non_recoverable_threshold[ 8b]
> [              40h] = upper_critical_threshold[ 8b]
> [              3Ah] = upper_non_critical_threshold[ 8b]
> [               Ah] = lower_non_recoverable_threshold[ 8b]
> [              10h] = lower_critical_threshold[ 8b]
> [              15h] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C6h] = id_string_type_length_code[ 8b]
> [    315F45494350h] = id_string[48b]
> Caching SDR record 2 of 36 (current record ID 2)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [               3h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [               4h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[54B]
> [ 03h 00h 51h 01h 31h 20h 00h 03h ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 46h 32h 5Fh 05h 50h 40h 3Ah 0Ah ]
> [ 10h 15h 01h 01h 00h 00h 00h C6h ]
> [ 50h 43h 49h 45h 5Fh 30h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [               3h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              31h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [              46h] = normal_maximum[ 8b]
> [              32h] = normal_minimum[ 8b]
> [              5Fh] = sensor_maximum_reading[ 8b]
> [               5h] = sensor_minimum_reading[ 8b]
> [              50h] = upper_non_recoverable_threshold[ 8b]
> [              40h] = upper_critical_threshold[ 8b]
> [              3Ah] = upper_non_critical_threshold[ 8b]
> [               Ah] = lower_non_recoverable_threshold[ 8b]
> [              10h] = lower_critical_threshold[ 8b]
> [              15h] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C6h] = id_string_type_length_code[ 8b]
> [    305F45494350h] = id_string[48b]
> Caching SDR record 3 of 36 (current record ID 3)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [               4h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [               5h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[56B]
> [ 04h 00h 51h 01h 33h 20h 00h 05h ]
> [ 07h 00h 7Fh 68h 02h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 00h 04h 00h 00h ]
> [ 08h 00h 00h 00h 00h D0h 00h 8Ah ]
> [ D6h 1Bh FFh 00h AFh ABh A7h 46h ]
> [ 4Ah 4Eh 00h 00h 00h 00h 00h C8h ]
> [ 43h 50h 55h 56h 4Fh 52h 45h 41h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [               4h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              33h] = 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]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               2h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               0h] = sensor_unit1.analog_data_format[ 2b]
> [               4h] = sensor_unit2.base_unit[ 8b]
> [               0h] = sensor_unit3.modifier_unit[ 8b]
> [               0h] = linearization[ 7b]
> [               0h] = linearization.reserved[ 1b]
> [               8h] = 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]
> [               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]
> [              8Ah] = nominal_reading[ 8b]
> [              D6h] = normal_maximum[ 8b]
> [              1Bh] = normal_minimum[ 8b]
> [              FFh] = sensor_maximum_reading[ 8b]
> [               0h] = sensor_minimum_reading[ 8b]
> [              AFh] = upper_non_recoverable_threshold[ 8b]
> [              ABh] = upper_critical_threshold[ 8b]
> [              A7h] = upper_non_critical_threshold[ 8b]
> [              46h] = lower_non_recoverable_threshold[ 8b]
> [              4Ah] = lower_critical_threshold[ 8b]
> [              4Eh] = 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]
> [4145524F56555043h] = id_string[64b]
> Caching SDR record 4 of 36 (current record ID 4)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [               5h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [               6h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[54B]
> [ 05h 00h 51h 01h 31h 20h 00h 08h ]
> [ 07h 00h 7Fh 68h 02h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 00h 04h 00h 00h ]
> [ 60h 00h 00h 00h 00h D0h 00h CFh ]
> [ FEh 70h 9Fh 60h 91h 8Ch 87h 66h ]
> [ 68h 6Dh 00h 00h 00h 00h 00h C6h ]
> [ 31h 32h 56h 53h 45h 4Eh ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [               5h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              31h] = 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]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               2h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               0h] = sensor_unit1.analog_data_format[ 2b]
> [               4h] = sensor_unit2.base_unit[ 8b]
> [               0h] = sensor_unit3.modifier_unit[ 8b]
> [               0h] = linearization[ 7b]
> [               0h] = linearization.reserved[ 1b]
> [              60h] = 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]
> [               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]
> [              CFh] = nominal_reading[ 8b]
> [              FEh] = normal_maximum[ 8b]
> [              70h] = normal_minimum[ 8b]
> [              9Fh] = sensor_maximum_reading[ 8b]
> [              60h] = sensor_minimum_reading[ 8b]
> [              91h] = upper_non_recoverable_threshold[ 8b]
> [              8Ch] = upper_critical_threshold[ 8b]
> [              87h] = upper_non_critical_threshold[ 8b]
> [              66h] = lower_non_recoverable_threshold[ 8b]
> [              68h] = lower_critical_threshold[ 8b]
> [              6Dh] = 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]
> [    4E4553563231h] = id_string[48b]
> Caching SDR record 5 of 36 (current record ID 5)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [               6h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [               7h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[56B]
> [ 06h 00h 51h 01h 33h 20h 00h 0Bh ]
> [ 07h 00h 7Fh 68h 04h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 20h 12h 00h 07h ]
> [ 01h 00h 00h 00h 00h B0h 00h 12h ]
> [ FFh 05h FFh 00h 00h 00h 00h 00h ]
> [ 00h 00h 00h 00h 00h 00h 00h C8h ]
> [ 46h 41h 4Eh 5Fh 43h 50h 55h 30h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [               6h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              33h] = 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]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               4h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               4h] = sensor_unit1.rate_unit[ 3b]
> [               0h] = sensor_unit1.analog_data_format[ 2b]
> [              12h] = sensor_unit2.base_unit[ 8b]
> [               0h] = sensor_unit3.modifier_unit[ 8b]
> [               7h] = 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]
> [               Bh] = 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]
> [              12h] = nominal_reading[ 8b]
> [              FFh] = normal_maximum[ 8b]
> [               5h] = 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]
> [              C8h] = id_string_type_length_code[ 8b]
> [305550435F4E4146h] = id_string[64b]
> Caching SDR record 6 of 36 (current record ID 6)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [               7h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [               8h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[56B]
> [ 07h 00h 51h 01h 33h 20h 00h 06h ]
> [ 07h 00h 7Fh 68h 02h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 00h 04h 00h 00h ]
> [ 08h 00h 00h 00h 00h D0h 00h 8Ah ]
> [ D6h 1Bh FFh 00h AFh ABh A7h 46h ]
> [ 4Ah 4Eh 00h 00h 00h 00h 00h C8h ]
> [ 43h 50h 55h 56h 4Fh 52h 45h 42h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [               7h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              33h] = 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]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               2h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               0h] = sensor_unit1.analog_data_format[ 2b]
> [               4h] = sensor_unit2.base_unit[ 8b]
> [               0h] = sensor_unit3.modifier_unit[ 8b]
> [               0h] = linearization[ 7b]
> [               0h] = linearization.reserved[ 1b]
> [               8h] = 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]
> [               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]
> [              8Ah] = nominal_reading[ 8b]
> [              D6h] = normal_maximum[ 8b]
> [              1Bh] = normal_minimum[ 8b]
> [              FFh] = sensor_maximum_reading[ 8b]
> [               0h] = sensor_minimum_reading[ 8b]
> [              AFh] = upper_non_recoverable_threshold[ 8b]
> [              ABh] = upper_critical_threshold[ 8b]
> [              A7h] = upper_non_critical_threshold[ 8b]
> [              46h] = lower_non_recoverable_threshold[ 8b]
> [              4Ah] = lower_critical_threshold[ 8b]
> [              4Eh] = 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]
> [4245524F56555043h] = id_string[64b]
> Caching SDR record 7 of 36 (current record ID 7)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [               8h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [               9h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[52B]
> [ 08h 00h 51h 01h 2Fh 20h 00h 07h ]
> [ 07h 00h 7Fh 68h 02h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 00h 04h 00h 00h ]
> [ 10h 00h 00h 00h 00h D0h 00h CFh ]
> [ EDh AFh FAh 9Ch FAh F3h EDh A5h ]
> [ ABh B2h 00h 00h 00h 00h 00h C4h ]
> [ 33h 2Eh 33h 56h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [               8h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              2Fh] = 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]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               2h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               0h] = sensor_unit1.analog_data_format[ 2b]
> [               4h] = sensor_unit2.base_unit[ 8b]
> [               0h] = sensor_unit3.modifier_unit[ 8b]
> [               0h] = linearization[ 7b]
> [               0h] = linearization.reserved[ 1b]
> [              10h] = 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]
> [               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]
> [              CFh] = nominal_reading[ 8b]
> [              EDh] = normal_maximum[ 8b]
> [              AFh] = normal_minimum[ 8b]
> [              FAh] = sensor_maximum_reading[ 8b]
> [              9Ch] = sensor_minimum_reading[ 8b]
> [              FAh] = upper_non_recoverable_threshold[ 8b]
> [              F3h] = upper_critical_threshold[ 8b]
> [              EDh] = upper_non_critical_threshold[ 8b]
> [              A5h] = lower_non_recoverable_threshold[ 8b]
> [              ABh] = lower_critical_threshold[ 8b]
> [              B2h] = 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]
> [        56332E33h] = id_string[32b]
> Caching SDR record 8 of 36 (current record ID 8)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [               9h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [               Ah] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[56B]
> [ 09h 00h 51h 01h 33h 20h 00h 0Eh ]
> [ 07h 00h 7Fh 68h 04h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 20h 12h 00h 07h ]
> [ 01h 00h 00h 00h 00h B0h 00h 12h ]
> [ FFh 05h FFh 05h 08h 0Ah 0Bh 64h ]
> [ 32h 21h 00h 00h 00h 00h 00h C8h ]
> [ 46h 41h 4Eh 5Fh 53h 59h 53h 32h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [               9h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              33h] = record_length[ 8b]
> [               0h] = sensor_owner_id.type[ 1b]
> [              10h] = sensor_owner_id[ 7b]
> [               0h] = sensor_owner_lun[ 2b]
> [               0h] = sensor_owner_lun.reserved[ 2b]
> [               0h] = channel_number[ 4b]
> [               Eh] = sensor_number[ 8b]
> [               7h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               4h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               4h] = sensor_unit1.rate_unit[ 3b]
> [               0h] = sensor_unit1.analog_data_format[ 2b]
> [              12h] = sensor_unit2.base_unit[ 8b]
> [               0h] = sensor_unit3.modifier_unit[ 8b]
> [               7h] = 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]
> [               Bh] = 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]
> [              12h] = nominal_reading[ 8b]
> [              FFh] = normal_maximum[ 8b]
> [               5h] = normal_minimum[ 8b]
> [              FFh] = sensor_maximum_reading[ 8b]
> [               5h] = sensor_minimum_reading[ 8b]
> [               8h] = upper_non_recoverable_threshold[ 8b]
> [               Ah] = upper_critical_threshold[ 8b]
> [               Bh] = upper_non_critical_threshold[ 8b]
> [              64h] = lower_non_recoverable_threshold[ 8b]
> [              32h] = lower_critical_threshold[ 8b]
> [              21h] = 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]
> [325359535F4E4146h] = id_string[64b]
> Caching SDR record 9 of 36 (current record ID 9)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [               Ah] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [               Bh] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[56B]
> [ 0Ah 00h 51h 01h 33h 20h 00h 0Dh ]
> [ 07h 00h 7Fh 68h 04h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 20h 12h 00h 07h ]
> [ 01h 00h 00h 00h 00h B0h 00h 12h ]
> [ FFh 05h FFh 05h 08h 0Ah 0Bh 64h ]
> [ 32h 21h 00h 00h 00h 00h 00h C8h ]
> [ 46h 41h 4Eh 5Fh 53h 59h 53h 31h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [               Ah] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              33h] = record_length[ 8b]
> [               0h] = sensor_owner_id.type[ 1b]
> [              10h] = sensor_owner_id[ 7b]
> [               0h] = sensor_owner_lun[ 2b]
> [               0h] = sensor_owner_lun.reserved[ 2b]
> [               0h] = channel_number[ 4b]
> [               Dh] = sensor_number[ 8b]
> [               7h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               4h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               4h] = sensor_unit1.rate_unit[ 3b]
> [               0h] = sensor_unit1.analog_data_format[ 2b]
> [              12h] = sensor_unit2.base_unit[ 8b]
> [               0h] = sensor_unit3.modifier_unit[ 8b]
> [               7h] = 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]
> [               Bh] = 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]
> [              12h] = nominal_reading[ 8b]
> [              FFh] = normal_maximum[ 8b]
> [               5h] = normal_minimum[ 8b]
> [              FFh] = sensor_maximum_reading[ 8b]
> [               5h] = sensor_minimum_reading[ 8b]
> [               8h] = upper_non_recoverable_threshold[ 8b]
> [               Ah] = upper_critical_threshold[ 8b]
> [               Bh] = upper_non_critical_threshold[ 8b]
> [              64h] = lower_non_recoverable_threshold[ 8b]
> [              32h] = lower_critical_threshold[ 8b]
> [              21h] = 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]
> [315359535F4E4146h] = id_string[64b]
> Caching SDR record 10 of 36 (current record ID 10)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [               Bh] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [               Ch] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[56B]
> [ 0Bh 00h 51h 01h 33h 20h 00h 0Fh ]
> [ 07h 00h 7Fh 68h 04h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 20h 12h 00h 07h ]
> [ 01h 00h 00h 00h 00h B0h 00h 78h ]
> [ BEh 5Fh FFh 05h 08h 0Ah 0Bh 64h ]
> [ 32h 21h 00h 00h 00h 00h 00h C8h ]
> [ 46h 41h 4Eh 5Fh 53h 59h 53h 33h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [               Bh] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              33h] = record_length[ 8b]
> [               0h] = sensor_owner_id.type[ 1b]
> [              10h] = sensor_owner_id[ 7b]
> [               0h] = sensor_owner_lun[ 2b]
> [               0h] = sensor_owner_lun.reserved[ 2b]
> [               0h] = channel_number[ 4b]
> [               Fh] = sensor_number[ 8b]
> [               7h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               4h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               4h] = sensor_unit1.rate_unit[ 3b]
> [               0h] = sensor_unit1.analog_data_format[ 2b]
> [              12h] = sensor_unit2.base_unit[ 8b]
> [               0h] = sensor_unit3.modifier_unit[ 8b]
> [               7h] = 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]
> [               Bh] = 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]
> [              78h] = nominal_reading[ 8b]
> [              BEh] = normal_maximum[ 8b]
> [              5Fh] = normal_minimum[ 8b]
> [              FFh] = sensor_maximum_reading[ 8b]
> [               5h] = sensor_minimum_reading[ 8b]
> [               8h] = upper_non_recoverable_threshold[ 8b]
> [               Ah] = upper_critical_threshold[ 8b]
> [               Bh] = upper_non_critical_threshold[ 8b]
> [              64h] = lower_non_recoverable_threshold[ 8b]
> [              32h] = lower_critical_threshold[ 8b]
> [              21h] = 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]
> [335359535F4E4146h] = id_string[64b]
> Caching SDR record 11 of 36 (current record ID 11)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [               Ch] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [               Dh] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[56B]
> [ 0Ch 00h 51h 01h 33h 20h 00h 0Ch ]
> [ 07h 00h 7Fh 68h 04h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 20h 12h 00h 07h ]
> [ 01h 00h 00h 00h 00h B0h 00h 78h ]
> [ BEh 5Fh FFh 05h 00h 00h 00h 00h ]
> [ 00h 00h 00h 00h 00h 00h 00h C8h ]
> [ 46h 41h 4Eh 5Fh 43h 50h 55h 31h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [               Ch] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              33h] = 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]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               4h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               4h] = sensor_unit1.rate_unit[ 3b]
> [               0h] = sensor_unit1.analog_data_format[ 2b]
> [              12h] = sensor_unit2.base_unit[ 8b]
> [               0h] = sensor_unit3.modifier_unit[ 8b]
> [               7h] = 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]
> [               Bh] = 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]
> [              78h] = nominal_reading[ 8b]
> [              BEh] = normal_maximum[ 8b]
> [              5Fh] = normal_minimum[ 8b]
> [              FFh] = sensor_maximum_reading[ 8b]
> [               5h] = 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]
> [              C8h] = id_string_type_length_code[ 8b]
> [315550435F4E4146h] = id_string[64b]
> Caching SDR record 12 of 36 (current record ID 12)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [               Dh] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [               Eh] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[56B]
> [ 0Dh 00h 51h 01h 33h 20h 00h 10h ]
> [ 07h 00h 7Fh 68h 04h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 20h 12h 00h 07h ]
> [ 01h 00h 00h 00h 00h B0h 00h 78h ]
> [ BEh 5Fh FFh 05h 08h 0Ah 0Bh 64h ]
> [ 32h 21h 00h 00h 00h 00h 00h C8h ]
> [ 46h 41h 4Eh 5Fh 53h 59h 53h 34h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [               Dh] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              33h] = record_length[ 8b]
> [               0h] = sensor_owner_id.type[ 1b]
> [              10h] = sensor_owner_id[ 7b]
> [               0h] = sensor_owner_lun[ 2b]
> [               0h] = sensor_owner_lun.reserved[ 2b]
> [               0h] = channel_number[ 4b]
> [              10h] = sensor_number[ 8b]
> [               7h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               4h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               4h] = sensor_unit1.rate_unit[ 3b]
> [               0h] = sensor_unit1.analog_data_format[ 2b]
> [              12h] = sensor_unit2.base_unit[ 8b]
> [               0h] = sensor_unit3.modifier_unit[ 8b]
> [               7h] = 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]
> [               Bh] = 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]
> [              78h] = nominal_reading[ 8b]
> [              BEh] = normal_maximum[ 8b]
> [              5Fh] = normal_minimum[ 8b]
> [              FFh] = sensor_maximum_reading[ 8b]
> [               5h] = sensor_minimum_reading[ 8b]
> [               8h] = upper_non_recoverable_threshold[ 8b]
> [               Ah] = upper_critical_threshold[ 8b]
> [               Bh] = upper_non_critical_threshold[ 8b]
> [              64h] = lower_non_recoverable_threshold[ 8b]
> [              32h] = lower_critical_threshold[ 8b]
> [              21h] = 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]
> [345359535F4E4146h] = id_string[64b]
> Caching SDR record 13 of 36 (current record ID 13)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [               Eh] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [               Fh] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[52B]
> [ 0Eh 00h 51h 01h 2Fh 20h 00h 00h ]
> [ 07h 00h 7Fh 68h 02h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 00h 04h 00h 00h ]
> [ 18h 00h 96h 00h 00h D0h 00h CDh ]
> [ FDh 72h FEh A0h F8h F3h EEh B5h ]
> [ BBh C0h 00h 00h 00h 00h 00h C4h ]
> [ 35h 56h 44h 44h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [               Eh] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              2Fh] = 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]
> [               0h] = sensor_number[ 8b]
> [               7h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               2h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               0h] = sensor_unit1.analog_data_format[ 2b]
> [               4h] = sensor_unit2.base_unit[ 8b]
> [               0h] = sensor_unit3.modifier_unit[ 8b]
> [               0h] = linearization[ 7b]
> [               0h] = linearization.reserved[ 1b]
> [              18h] = m_ls[ 8b]
> [               0h] = tolerance[ 6b]
> [               0h] = m_ms[ 2b]
> [              96h] = 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]
> [              CDh] = nominal_reading[ 8b]
> [              FDh] = normal_maximum[ 8b]
> [              72h] = normal_minimum[ 8b]
> [              FEh] = sensor_maximum_reading[ 8b]
> [              A0h] = sensor_minimum_reading[ 8b]
> [              F8h] = upper_non_recoverable_threshold[ 8b]
> [              F3h] = upper_critical_threshold[ 8b]
> [              EEh] = upper_non_critical_threshold[ 8b]
> [              B5h] = lower_non_recoverable_threshold[ 8b]
> [              BBh] = lower_critical_threshold[ 8b]
> [              C0h] = 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]
> [        44445635h] = id_string[32b]
> Caching SDR record 14 of 36 (current record ID 14)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [               Fh] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              10h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[56B]
> [ 0Fh 00h 51h 01h 33h 20h 00h 11h ]
> [ 07h 00h 7Fh 68h 04h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 20h 12h 00h 07h ]
> [ 01h 00h 00h 00h 00h B0h 00h 78h ]
> [ BEh 5Fh FFh 05h 08h 0Ah 0Bh 64h ]
> [ 32h 21h 00h 00h 00h 00h 00h C8h ]
> [ 46h 41h 4Eh 5Fh 53h 59h 53h 35h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [               Fh] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              33h] = record_length[ 8b]
> [               0h] = sensor_owner_id.type[ 1b]
> [              10h] = sensor_owner_id[ 7b]
> [               0h] = sensor_owner_lun[ 2b]
> [               0h] = sensor_owner_lun.reserved[ 2b]
> [               0h] = channel_number[ 4b]
> [              11h] = sensor_number[ 8b]
> [               7h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               4h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               4h] = sensor_unit1.rate_unit[ 3b]
> [               0h] = sensor_unit1.analog_data_format[ 2b]
> [              12h] = sensor_unit2.base_unit[ 8b]
> [               0h] = sensor_unit3.modifier_unit[ 8b]
> [               7h] = 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]
> [               Bh] = 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]
> [              78h] = nominal_reading[ 8b]
> [              BEh] = normal_maximum[ 8b]
> [              5Fh] = normal_minimum[ 8b]
> [              FFh] = sensor_maximum_reading[ 8b]
> [               5h] = sensor_minimum_reading[ 8b]
> [               8h] = upper_non_recoverable_threshold[ 8b]
> [               Ah] = upper_critical_threshold[ 8b]
> [               Bh] = upper_non_critical_threshold[ 8b]
> [              64h] = lower_non_recoverable_threshold[ 8b]
> [              32h] = lower_critical_threshold[ 8b]
> [              21h] = 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]
> [355359535F4E4146h] = id_string[64b]
> Caching SDR record 15 of 36 (current record ID 15)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              10h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              11h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[56B]
> [ 10h 00h 51h 01h 33h 20h 00h 12h ]
> [ 07h 00h 7Fh 68h 04h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 20h 12h 00h 07h ]
> [ 01h 00h 00h 00h 00h B0h 00h 78h ]
> [ BEh 5Fh FFh 05h 08h 0Ah 0Bh 64h ]
> [ 32h 21h 00h 00h 00h 00h 00h C8h ]
> [ 46h 41h 4Eh 5Fh 53h 59h 53h 36h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              10h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              33h] = 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]
> [               7h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               4h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               4h] = sensor_unit1.rate_unit[ 3b]
> [               0h] = sensor_unit1.analog_data_format[ 2b]
> [              12h] = sensor_unit2.base_unit[ 8b]
> [               0h] = sensor_unit3.modifier_unit[ 8b]
> [               7h] = 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]
> [               Bh] = 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]
> [              78h] = nominal_reading[ 8b]
> [              BEh] = normal_maximum[ 8b]
> [              5Fh] = normal_minimum[ 8b]
> [              FFh] = sensor_maximum_reading[ 8b]
> [               5h] = sensor_minimum_reading[ 8b]
> [               8h] = upper_non_recoverable_threshold[ 8b]
> [               Ah] = upper_critical_threshold[ 8b]
> [               Bh] = upper_non_critical_threshold[ 8b]
> [              64h] = lower_non_recoverable_threshold[ 8b]
> [              32h] = lower_critical_threshold[ 8b]
> [              21h] = 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]
> [365359535F4E4146h] = id_string[64b]
> Caching SDR record 16 of 36 (current record ID 16)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              11h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              12h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[52B]
> [ 11h 00h 51h 01h 2Fh 20h 00h 02h ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 00h 00h 7Fh 80h 5Fh 55h 50h 10h ]
> [ 15h 1Ah 01h 01h 00h 00h 00h C4h ]
> [ 43h 50h 55h 31h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              11h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              2Fh] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [               0h] = normal_maximum[ 8b]
> [               0h] = normal_minimum[ 8b]
> [              7Fh] = sensor_maximum_reading[ 8b]
> [              80h] = sensor_minimum_reading[ 8b]
> [              5Fh] = upper_non_recoverable_threshold[ 8b]
> [              55h] = upper_critical_threshold[ 8b]
> [              50h] = upper_non_critical_threshold[ 8b]
> [              10h] = lower_non_recoverable_threshold[ 8b]
> [              15h] = lower_critical_threshold[ 8b]
> [              1Ah] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C4h] = id_string_type_length_code[ 8b]
> [        31555043h] = id_string[32b]
> Caching SDR record 17 of 36 (current record ID 17)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              12h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              13h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[52B]
> [ 12h 00h 51h 01h 2Fh 20h 00h 01h ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 00h 00h 7Fh 80h 5Fh 55h 50h 10h ]
> [ 15h 1Ah 01h 01h 00h 00h 00h C4h ]
> [ 43h 50h 55h 30h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              12h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              2Fh] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [               0h] = normal_maximum[ 8b]
> [               0h] = normal_minimum[ 8b]
> [              7Fh] = sensor_maximum_reading[ 8b]
> [              80h] = sensor_minimum_reading[ 8b]
> [              5Fh] = upper_non_recoverable_threshold[ 8b]
> [              55h] = upper_critical_threshold[ 8b]
> [              50h] = upper_non_critical_threshold[ 8b]
> [              10h] = lower_non_recoverable_threshold[ 8b]
> [              15h] = lower_critical_threshold[ 8b]
> [              1Ah] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C4h] = id_string_type_length_code[ 8b]
> [        30555043h] = id_string[32b]
> Caching SDR record 18 of 36 (current record ID 18)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              13h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              14h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[53B]
> [ 13h 00h 51h 01h 30h 20h 00h 13h ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 46h 32h 6Fh 01h 46h 41h 3Ch 0Ah ]
> [ 0Eh 12h 01h 01h 00h 00h 00h C5h ]
> [ 49h 4Fh 48h 5Fh 30h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              13h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              30h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [              46h] = normal_maximum[ 8b]
> [              32h] = normal_minimum[ 8b]
> [              6Fh] = sensor_maximum_reading[ 8b]
> [               1h] = sensor_minimum_reading[ 8b]
> [              46h] = upper_non_recoverable_threshold[ 8b]
> [              41h] = upper_critical_threshold[ 8b]
> [              3Ch] = upper_non_critical_threshold[ 8b]
> [               Ah] = lower_non_recoverable_threshold[ 8b]
> [               Eh] = lower_critical_threshold[ 8b]
> [              12h] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C5h] = id_string_type_length_code[ 8b]
> [      305F484F49h] = id_string[40b]
> Caching SDR record 19 of 36 (current record ID 19)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              14h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              15h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[53B]
> [ 14h 00h 51h 01h 30h 20h 00h 14h ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 46h 32h 6Fh 01h 46h 41h 3Ch 0Ah ]
> [ 0Eh 12h 01h 01h 00h 00h 00h C5h ]
> [ 49h 4Fh 48h 5Fh 31h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              14h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              30h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [              46h] = normal_maximum[ 8b]
> [              32h] = normal_minimum[ 8b]
> [              6Fh] = sensor_maximum_reading[ 8b]
> [               1h] = sensor_minimum_reading[ 8b]
> [              46h] = upper_non_recoverable_threshold[ 8b]
> [              41h] = upper_critical_threshold[ 8b]
> [              3Ch] = upper_non_critical_threshold[ 8b]
> [               Ah] = lower_non_recoverable_threshold[ 8b]
> [               Eh] = lower_critical_threshold[ 8b]
> [              12h] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C5h] = id_string_type_length_code[ 8b]
> [      315F484F49h] = id_string[40b]
> Caching SDR record 20 of 36 (current record ID 20)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              15h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              16h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[53B]
> [ 15h 00h 51h 01h 30h 20h 00h 15h ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 46h 32h 6Fh 01h 46h 41h 3Ch 0Ah ]
> [ 0Eh 12h 01h 01h 00h 00h 00h C5h ]
> [ 49h 4Fh 48h 5Fh 32h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              15h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              30h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [              46h] = normal_maximum[ 8b]
> [              32h] = normal_minimum[ 8b]
> [              6Fh] = sensor_maximum_reading[ 8b]
> [               1h] = sensor_minimum_reading[ 8b]
> [              46h] = upper_non_recoverable_threshold[ 8b]
> [              41h] = upper_critical_threshold[ 8b]
> [              3Ch] = upper_non_critical_threshold[ 8b]
> [               Ah] = lower_non_recoverable_threshold[ 8b]
> [               Eh] = lower_critical_threshold[ 8b]
> [              12h] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C5h] = id_string_type_length_code[ 8b]
> [      325F484F49h] = id_string[40b]
> Caching SDR record 21 of 36 (current record ID 21)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              16h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              17h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[54B]
> [ 16h 00h 51h 01h 31h 20h 00h 16h ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 46h 32h 6Fh 01h 46h 41h 3Ch 0Ah ]
> [ 0Eh 12h 01h 01h 00h 00h 00h C6h ]
> [ 4Dh 45h 4Dh 31h 5Fh 30h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              16h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              31h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [              46h] = normal_maximum[ 8b]
> [              32h] = normal_minimum[ 8b]
> [              6Fh] = sensor_maximum_reading[ 8b]
> [               1h] = sensor_minimum_reading[ 8b]
> [              46h] = upper_non_recoverable_threshold[ 8b]
> [              41h] = upper_critical_threshold[ 8b]
> [              3Ch] = upper_non_critical_threshold[ 8b]
> [               Ah] = lower_non_recoverable_threshold[ 8b]
> [               Eh] = lower_critical_threshold[ 8b]
> [              12h] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C6h] = id_string_type_length_code[ 8b]
> [    305F314D454Dh] = id_string[48b]
> Caching SDR record 22 of 36 (current record ID 22)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              17h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              18h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[54B]
> [ 17h 00h 51h 01h 31h 20h 00h 17h ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 46h 32h 6Fh 01h 46h 41h 3Ch 0Ah ]
> [ 0Eh 12h 01h 01h 00h 00h 00h C6h ]
> [ 4Dh 45h 4Dh 31h 5Fh 31h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              17h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              31h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [              46h] = normal_maximum[ 8b]
> [              32h] = normal_minimum[ 8b]
> [              6Fh] = sensor_maximum_reading[ 8b]
> [               1h] = sensor_minimum_reading[ 8b]
> [              46h] = upper_non_recoverable_threshold[ 8b]
> [              41h] = upper_critical_threshold[ 8b]
> [              3Ch] = upper_non_critical_threshold[ 8b]
> [               Ah] = lower_non_recoverable_threshold[ 8b]
> [               Eh] = lower_critical_threshold[ 8b]
> [              12h] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C6h] = id_string_type_length_code[ 8b]
> [    315F314D454Dh] = id_string[48b]
> Caching SDR record 23 of 36 (current record ID 23)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              18h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              19h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[54B]
> [ 18h 00h 51h 01h 31h 20h 00h 18h ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 46h 32h 6Fh 01h 46h 41h 3Ch 0Ah ]
> [ 0Eh 12h 01h 01h 00h 00h 00h C6h ]
> [ 4Dh 45h 4Dh 31h 5Fh 32h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              18h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              31h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [              46h] = normal_maximum[ 8b]
> [              32h] = normal_minimum[ 8b]
> [              6Fh] = sensor_maximum_reading[ 8b]
> [               1h] = sensor_minimum_reading[ 8b]
> [              46h] = upper_non_recoverable_threshold[ 8b]
> [              41h] = upper_critical_threshold[ 8b]
> [              3Ch] = upper_non_critical_threshold[ 8b]
> [               Ah] = lower_non_recoverable_threshold[ 8b]
> [               Eh] = lower_critical_threshold[ 8b]
> [              12h] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C6h] = id_string_type_length_code[ 8b]
> [    325F314D454Dh] = id_string[48b]
> Caching SDR record 24 of 36 (current record ID 24)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              19h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              1Ah] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[54B]
> [ 19h 00h 51h 01h 31h 20h 00h 19h ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 46h 32h 6Fh 01h 46h 41h 3Ch 0Ah ]
> [ 0Eh 12h 01h 01h 00h 00h 00h C6h ]
> [ 4Dh 45h 4Dh 30h 5Fh 30h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              19h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              31h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [              46h] = normal_maximum[ 8b]
> [              32h] = normal_minimum[ 8b]
> [              6Fh] = sensor_maximum_reading[ 8b]
> [               1h] = sensor_minimum_reading[ 8b]
> [              46h] = upper_non_recoverable_threshold[ 8b]
> [              41h] = upper_critical_threshold[ 8b]
> [              3Ch] = upper_non_critical_threshold[ 8b]
> [               Ah] = lower_non_recoverable_threshold[ 8b]
> [               Eh] = lower_critical_threshold[ 8b]
> [              12h] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C6h] = id_string_type_length_code[ 8b]
> [    305F304D454Dh] = id_string[48b]
> Caching SDR record 25 of 36 (current record ID 25)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              1Ah] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              1Bh] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[54B]
> [ 1Ah 00h 51h 01h 31h 20h 00h 1Ah ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 46h 32h 6Fh 01h 46h 41h 3Ch 0Ah ]
> [ 0Eh 12h 01h 01h 00h 00h 00h C6h ]
> [ 4Dh 45h 4Dh 30h 5Fh 31h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              1Ah] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              31h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [              46h] = normal_maximum[ 8b]
> [              32h] = normal_minimum[ 8b]
> [              6Fh] = sensor_maximum_reading[ 8b]
> [               1h] = sensor_minimum_reading[ 8b]
> [              46h] = upper_non_recoverable_threshold[ 8b]
> [              41h] = upper_critical_threshold[ 8b]
> [              3Ch] = upper_non_critical_threshold[ 8b]
> [               Ah] = lower_non_recoverable_threshold[ 8b]
> [               Eh] = lower_critical_threshold[ 8b]
> [              12h] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C6h] = id_string_type_length_code[ 8b]
> [    315F304D454Dh] = id_string[48b]
> Caching SDR record 26 of 36 (current record ID 26)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              1Bh] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              1Ch] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[54B]
> [ 1Bh 00h 51h 01h 31h 20h 00h 1Bh ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 46h 32h 6Fh 01h 46h 41h 3Ch 0Ah ]
> [ 0Eh 12h 01h 01h 00h 00h 00h C6h ]
> [ 4Dh 45h 4Dh 30h 5Fh 32h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              1Bh] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              31h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [              46h] = normal_maximum[ 8b]
> [              32h] = normal_minimum[ 8b]
> [              6Fh] = sensor_maximum_reading[ 8b]
> [               1h] = sensor_minimum_reading[ 8b]
> [              46h] = upper_non_recoverable_threshold[ 8b]
> [              41h] = upper_critical_threshold[ 8b]
> [              3Ch] = upper_non_critical_threshold[ 8b]
> [               Ah] = lower_non_recoverable_threshold[ 8b]
> [               Eh] = lower_critical_threshold[ 8b]
> [              12h] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C6h] = id_string_type_length_code[ 8b]
> [    325F304D454Dh] = id_string[48b]
> Caching SDR record 27 of 36 (current record ID 27)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              1Ch] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              1Dh] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[55B]
> [ 1Ch 00h 51h 01h 32h 20h 00h 1Ch ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 46h 32h 6Fh 01h 46h 41h 3Ch 0Ah ]
> [ 0Eh 12h 01h 01h 00h 00h 00h C7h ]
> [ 50h 4Ch 41h 4Eh 30h 5Fh 30h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              1Ch] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              32h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [              46h] = normal_maximum[ 8b]
> [              32h] = normal_minimum[ 8b]
> [              6Fh] = sensor_maximum_reading[ 8b]
> [               1h] = sensor_minimum_reading[ 8b]
> [              46h] = upper_non_recoverable_threshold[ 8b]
> [              41h] = upper_critical_threshold[ 8b]
> [              3Ch] = upper_non_critical_threshold[ 8b]
> [               Ah] = lower_non_recoverable_threshold[ 8b]
> [               Eh] = lower_critical_threshold[ 8b]
> [              12h] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C7h] = id_string_type_length_code[ 8b]
> [  305F304E414C50h] = id_string[56b]
> Caching SDR record 28 of 36 (current record ID 28)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              1Dh] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              1Eh] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[55B]
> [ 1Dh 00h 51h 01h 32h 20h 00h 1Dh ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 46h 32h 6Fh 01h 46h 41h 3Ch 0Ah ]
> [ 0Eh 12h 01h 01h 00h 00h 00h C7h ]
> [ 50h 4Ch 41h 4Eh 30h 5Fh 31h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              1Dh] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              32h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [              46h] = normal_maximum[ 8b]
> [              32h] = normal_minimum[ 8b]
> [              6Fh] = sensor_maximum_reading[ 8b]
> [               1h] = sensor_minimum_reading[ 8b]
> [              46h] = upper_non_recoverable_threshold[ 8b]
> [              41h] = upper_critical_threshold[ 8b]
> [              3Ch] = upper_non_critical_threshold[ 8b]
> [               Ah] = lower_non_recoverable_threshold[ 8b]
> [               Eh] = lower_critical_threshold[ 8b]
> [              12h] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C7h] = id_string_type_length_code[ 8b]
> [  315F304E414C50h] = id_string[56b]
> Caching SDR record 29 of 36 (current record ID 29)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              1Eh] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              1Fh] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[55B]
> [ 1Eh 00h 51h 01h 32h 20h 00h 1Eh ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 46h 32h 6Fh 01h 46h 41h 3Ch 0Ah ]
> [ 0Eh 12h 01h 01h 00h 00h 00h C7h ]
> [ 50h 4Ch 41h 4Eh 30h 5Fh 32h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              1Eh] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              32h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [              46h] = normal_maximum[ 8b]
> [              32h] = normal_minimum[ 8b]
> [              6Fh] = sensor_maximum_reading[ 8b]
> [               1h] = sensor_minimum_reading[ 8b]
> [              46h] = upper_non_recoverable_threshold[ 8b]
> [              41h] = upper_critical_threshold[ 8b]
> [              3Ch] = upper_non_critical_threshold[ 8b]
> [               Ah] = lower_non_recoverable_threshold[ 8b]
> [               Eh] = lower_critical_threshold[ 8b]
> [              12h] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C7h] = id_string_type_length_code[ 8b]
> [  325F304E414C50h] = id_string[56b]
> Caching SDR record 30 of 36 (current record ID 30)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              1Fh] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              20h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[55B]
> [ 1Fh 00h 51h 01h 32h 20h 00h 1Fh ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 46h 32h 6Fh 01h 46h 41h 3Ch 0Ah ]
> [ 0Eh 12h 01h 01h 00h 00h 00h C7h ]
> [ 50h 4Ch 41h 4Eh 31h 5Fh 30h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              1Fh] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              32h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [              46h] = normal_maximum[ 8b]
> [              32h] = normal_minimum[ 8b]
> [              6Fh] = sensor_maximum_reading[ 8b]
> [               1h] = sensor_minimum_reading[ 8b]
> [              46h] = upper_non_recoverable_threshold[ 8b]
> [              41h] = upper_critical_threshold[ 8b]
> [              3Ch] = upper_non_critical_threshold[ 8b]
> [               Ah] = lower_non_recoverable_threshold[ 8b]
> [               Eh] = lower_critical_threshold[ 8b]
> [              12h] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C7h] = id_string_type_length_code[ 8b]
> [  305F314E414C50h] = id_string[56b]
> Caching SDR record 31 of 36 (current record ID 31)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              20h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              21h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[55B]
> [ 20h 00h 51h 01h 32h 20h 00h 20h ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 46h 32h 6Fh 01h 46h 41h 3Ch 0Ah ]
> [ 0Eh 12h 01h 01h 00h 00h 00h C7h ]
> [ 50h 4Ch 41h 4Eh 31h 5Fh 31h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              20h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              32h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [              46h] = normal_maximum[ 8b]
> [              32h] = normal_minimum[ 8b]
> [              6Fh] = sensor_maximum_reading[ 8b]
> [               1h] = sensor_minimum_reading[ 8b]
> [              46h] = upper_non_recoverable_threshold[ 8b]
> [              41h] = upper_critical_threshold[ 8b]
> [              3Ch] = upper_non_critical_threshold[ 8b]
> [               Ah] = lower_non_recoverable_threshold[ 8b]
> [               Eh] = lower_critical_threshold[ 8b]
> [              12h] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C7h] = id_string_type_length_code[ 8b]
> [  315F314E414C50h] = id_string[56b]
> Caching SDR record 32 of 36 (current record ID 32)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              21h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              22h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[55B]
> [ 21h 00h 51h 01h 32h 20h 00h 21h ]
> [ 03h 00h 7Fh 68h 01h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 80h 01h 00h 00h ]
> [ 01h 00h 00h 00h 00h 00h 07h 3Ch ]
> [ 46h 32h 6Fh 01h 46h 41h 3Ch 0Ah ]
> [ 0Eh 12h 01h 01h 00h 00h 00h C7h ]
> [ 50h 4Ch 41h 4Eh 31h 5Fh 32h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              21h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              32h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               1h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              3Ch] = nominal_reading[ 8b]
> [              46h] = normal_maximum[ 8b]
> [              32h] = normal_minimum[ 8b]
> [              6Fh] = sensor_maximum_reading[ 8b]
> [               1h] = sensor_minimum_reading[ 8b]
> [              46h] = upper_non_recoverable_threshold[ 8b]
> [              41h] = upper_critical_threshold[ 8b]
> [              3Ch] = upper_non_critical_threshold[ 8b]
> [               Ah] = lower_non_recoverable_threshold[ 8b]
> [               Eh] = lower_critical_threshold[ 8b]
> [              12h] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C7h] = id_string_type_length_code[ 8b]
> [  325F314E414C50h] = id_string[56b]
> Caching SDR record 33 of 36 (current record ID 33)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              22h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              23h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[54B]
> [ 22h 00h 51h 01h 31h 20h 00h 09h ]
> [ 03h 00h 7Fh 68h 08h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 00h 06h 00h 00h ]
> [ 02h 00h 00h 00h 00h 00h 07h 64h ]
> [ 64h 64h FFh 00h FFh C8h AAh 10h ]
> [ 14h 1Ch 01h 01h 00h 00h 00h C6h ]
> [ 50h 6Fh 77h 65h 72h 30h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              22h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              31h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               8h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              64h] = nominal_reading[ 8b]
> [              64h] = normal_maximum[ 8b]
> [              64h] = normal_minimum[ 8b]
> [              FFh] = sensor_maximum_reading[ 8b]
> [               0h] = sensor_minimum_reading[ 8b]
> [              FFh] = upper_non_recoverable_threshold[ 8b]
> [              C8h] = upper_critical_threshold[ 8b]
> [              AAh] = upper_non_critical_threshold[ 8b]
> [              10h] = lower_non_recoverable_threshold[ 8b]
> [              14h] = lower_critical_threshold[ 8b]
> [              1Ch] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C6h] = id_string_type_length_code[ 8b]
> [    307265776F50h] = id_string[48b]
> Caching SDR record 34 of 36 (current record ID 34)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              23h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [              24h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[54B]
> [ 23h 00h 51h 01h 31h 20h 00h 0Ah ]
> [ 03h 00h 7Fh 68h 08h 01h 95h 7Ah ]
> [ 95h 7Ah 3Fh 3Fh 00h 06h 00h 00h ]
> [ 02h 00h 00h 00h 00h 00h 07h 64h ]
> [ 64h 64h FFh 00h FFh C8h AAh 10h ]
> [ 14h 1Ch 01h 01h 00h 00h 00h C6h ]
> [ 50h 6Fh 77h 65h 72h 31h ]
> =====================================================
> SDR Full Sensor Record
> =====================================================
> [              23h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [               1h] = record_type[ 8b]
> [              31h] = 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]
> [               3h] = entity_id[ 8b]
> [               0h] = entity_instance[ 7b]
> [               0h] = entity_instance.type[ 1b]
> [               1h] = sensor_initialization.sensor_scanning[ 1b]
> [               1h] = sensor_initialization.event_generation[ 1b]
> [               1h] = sensor_initialization.init_sensor_type[ 1b]
> [               1h] = sensor_initialization.init_hysteresis[ 1b]
> [               1h] = sensor_initialization.init_thresholds[ 1b]
> [               1h] = sensor_initialization.init_events[ 1b]
> [               1h] = sensor_initialization.init_scanning[ 1b]
> [               0h] = sensor_initialization.reserved[ 1b]
> [               0h] = sensor_capabilities.event_message_control_support[ 2b]
> [               2h] = sensor_capabilities.threshold_access_support[ 2b]
> [               2h] = sensor_capabilities.hysteresis_support[ 2b]
> [               1h] = sensor_capabilities.auto_re_arm_support[ 1b]
> [               0h] = sensor_capabilities.entity_ignore_support[ 1b]
> [               8h] = sensor_type[ 8b]
> [               1h] = event_reading_type_code[ 8b]
> [               1h] =
> threshold_assertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_non_critical_going_high_supported[ 1b]
> [               1h] =
> threshold_assertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_assertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> 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]
> [               1h] =
> lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_critical_threshold_is_comparison[ 1b]
> [               1h] =
> lower_threshold_reading_mask.lower_non_recoverable_is_comparison[ 1b]
> [               0h] = lower_threshold_reading_mask.reserved[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_non_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_non_critical_going_high_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.lower_critical_going_low_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.lower_critical_going_high_supported[ 1b]
> [               1h] =
> 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]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_critical_going_high_supported[
> 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_critical_going_low_supported[ 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_critical_going_high_supported[ 1b]
> [               0h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported[
> 1b]
> [               1h] =
> threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported[
> 1b]
> [               1h] =
> 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]
> [               1h] =
> readable_threshold_mask.lower_non_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_critical_threshold_is_readable[ 1b]
> [               1h] =
> readable_threshold_mask.lower_non_recoverable_threshold_is_readable[ 1b]
> [               1h] =
> 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]
> [               1h] =
> settable_threshold_mask.lower_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.lower_non_recoverable_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_non_critical_threshold_is_settable[ 1b]
> [               1h] =
> settable_threshold_mask.upper_critical_threshold_is_settable[ 1b]
> [               1h] =
> 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]
> [               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]
> [               1h] = analog_characteristics_flag.nominal_reading[ 1b]
> [               1h] = analog_characteristics_flag.normal_max[ 1b]
> [               1h] = analog_characteristics_flag.normal_min[ 1b]
> [               0h] = analog_characteristics_flag.reserved[ 5b]
> [              64h] = nominal_reading[ 8b]
> [              64h] = normal_maximum[ 8b]
> [              64h] = normal_minimum[ 8b]
> [              FFh] = sensor_maximum_reading[ 8b]
> [               0h] = sensor_minimum_reading[ 8b]
> [              FFh] = upper_non_recoverable_threshold[ 8b]
> [              C8h] = upper_critical_threshold[ 8b]
> [              AAh] = upper_non_critical_threshold[ 8b]
> [              10h] = lower_non_recoverable_threshold[ 8b]
> [              14h] = lower_critical_threshold[ 8b]
> [              1Ch] = lower_non_critical_threshold[ 8b]
> [               1h] = positive_going_threshold_hysteresis[ 8b]
> [               1h] = negative_going_threshold_hysteresis[ 8b]
> [               0h] = reserved[16b]
> [               0h] = oem[ 8b]
> [              C6h] = id_string_type_length_code[ 8b]
> [    317265776F50h] = id_string[48b]
> Caching SDR record 35 of 36 (current record ID 35)
> =====================================================
> Get SDR Request
> =====================================================
> [              23h] = cmd[ 8b]
> [            1A8Dh] = reservation_id[16b]
> [              24h] = record_id[16b]
> [               0h] = offset_into_record[ 8b]
> [              FFh] = bytes_to_read[ 8b]
> =====================================================
> Get SDR Response
> =====================================================
> [              23h] = cmd[ 8b]
> [               0h] = comp_code[ 8b]
> [               0h] = next_record_id[16b]
> [  BYTE ARRAY ... ] = record_data[27B]
> [ 24h 00h 51h C0h 16h 57h 01h 00h ]
> [ 0Dh 01h 2Ch 60h 00h 00h 00h 00h ]
> [ 00h 00h 10h 10h 00h 06h 00h 00h ]
> [ 08h 00h 00h ]
> =====================================================
> SDR OEM Record
> =====================================================
> [              24h] = record_id[16b]
> [               1h] = sdr_version_major[ 4b]
> [               5h] = sdr_version_minor[ 4b]
> [              C0h] = record_type[ 8b]
> [              16h] = record_length[ 8b]
> [             157h] = manufacturer_id[24b]
> [  BYTE ARRAY ... ] = oem_data[19B]
> [ 0Dh 01h 2Ch 60h 00h 00h 00h 00h ]
> [ 00h 00h 10h 10h 00h 06h 00h 00h ]
> [ 08h 00h 00h ]
> Caching SDR record 36 of 36 (current record ID 36)
> ipmi_sdr_cache_create: SDR record count invalid
> _______________________________________________
> 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]