freeipmi-users
[Top][All Lists]
Advanced

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

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


From: 发明田
Subject: [Freeipmi-users] Freeipmi 1.1.6 ipmi-sensors ipmi_sdr_cache_create: SDR record count invalid
Date: Tue, 3 Jul 2012 14:16:51 +0800

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


reply via email to

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