# Copyright (c) 2014 Kontron Europe GmbH # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from . import constants from . import register_message_class from . import Message from . import UnsignedInt from . import UnsignedIntMask from . import Bitfield from . import CompletionCode from . import Conditional from . import RemainingBytes from . import Optional from . import GroupExtensionIdentifier PICMG_IDENTIFIER = 0x00 FRU_ACTIVATION_FRU_ACTIVATE = 0x1 FRU_ACTIVATION_FRU_DEACTIVATE = 0x0 LINK_INTERFACE_BASE = 0x0 LINK_INTERFACE_FABRIC = 0x1 LINK_INTERFACE_UPDATE_CHANNEL = 0x2 LINK_TYPE_BASE = 0x01 LINK_TYPE_ETHERNET_FABRIC = 0x02 LINK_TYPE_INFINIBAND_FABRIC = 0x03 LINK_TYPE_STARFABRIC_FABRIC = 0x04 LINK_TYPE_PCIEXPRESS_FABRIC = 0x05 LINK_TYPE_OEM0 = 0xf0 LINK_TYPE_OEM1 = 0xf1 LINK_TYPE_OEM2 = 0xf2 LINK_TYPE_OEM3 = 0xf3 LINK_TYPE_EXT_BASE0 = 0x00 LINK_TYPE_EXT_BASE1 = 0x01 LINK_SIGNALING_CLASS_BASIC = 0 LINK_SIGNALING_CLASS_10_3125_GBD = 3 # when link signaling class value is 0000b LINK_TYPE_EXT_ETHERNET_FIX1000_BX = 0x0 LINK_TYPE_EXT_ETHERNET_FIX10G_BX4 = 0x1 LINK_TYPE_EXT_ETHERNET_FCPI = 0x02 LINK_TYPE_EXT_ETHERNET_FIX1000_KX = 0x3 LINK_TYPE_EXT_ETHERNET_FIX10G_KX4 = 0x4 # when link signaling class value is 0011b LINK_TYPE_EXT_ETHERNET_FIX10G_KR = 0x0 LINK_TYPE_EXT_ETHERNET_FIX40G_KR4 = 0x1 LINK_TYPE_EXT_OEM_LINK_TYPE_EXT_0 = 0x00 LINK_FLAGS_LANE0 = 0x01 LINK_FLAGS_LANE0123 = 0x0f LINK_STATE_DISABLE = 0 LINK_STATE_ENABLE = 1 FRU_CONTROL_COLD_RESET = 0x00 FRU_CONTROL_WARM_RESET = 0x01 FRU_CONTROL_GRACEFUL_REBOOT = 0x02 FRU_CONTROL_ISSUE_DIAGNOSTIC_INTERRUPT = 0x03 FRU_CONTROL_QUIESCED = 0x04 LED_COLOR_BLUE = 0x01 LED_COLOR_RED = 0x02 LED_COLOR_GREEN = 0x03 LED_COLOR_AMBER = 0x04 LED_COLOR_ORANGE = 0x05 LED_COLOR_WHITE = 0x06 LED_FUNCTION_OFF = 0x00 LED_FUNCTION_BLINKING_RANGE = list(range(0x01, 0xfa)) LED_FUNCTION_LAMP_TEST = 0xfb LED_FUNCTION_ON = 0xff LED_STATE_LOCAL_CONTROL = 0 LED_STATE_OVERRIDE = 1 LED_STATE_LAMP_TEST = 2 class PicmgIdentifier(UnsignedInt): def __init__(self, name='picmg_identifier'): super(PicmgIdentifier, self).__init__(name, 1, PICMG_IDENTIFIER) class PicmgMessage(Message): __group_extension__ = PICMG_IDENTIFIER @register_message_class class GetPicmgPropertiesReq(PicmgMessage): __cmdid__ = constants.CMDID_GET_PICMG_PROPERTIES __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), ) @register_message_class class GetPicmgPropertiesRsp(PicmgMessage): __cmdid__ = constants.CMDID_GET_PICMG_PROPERTIES __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('extension_version', 1), UnsignedInt('max_fru_device_id', 1), UnsignedInt('fru_device_id', 1), ) @register_message_class class GetAddressInfoReq(PicmgMessage): __cmdid__ = constants.CMDID_GET_ADDRESS_INFO __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('fru_id', 1), ) @register_message_class class GetAddressInfoRsp(PicmgMessage): __cmdid__ = constants.CMDID_GET_ADDRESS_INFO __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('hardware_address', 1), UnsignedInt('ipmb_0_address', 1), UnsignedInt('ipmb_1_address', 1), Optional( UnsignedInt('fru_id', 1), ), Optional( UnsignedInt('site_id', 1), ), Optional( UnsignedInt('site_type', 1), ), Optional( UnsignedInt('carrier_number', 1), ), ) @register_message_class class GetShelfAddressInfoReq(PicmgMessage): __cmdid__ = constants.CMDID_GET_SHELF_ADDRESS_INFO __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), ) @register_message_class class GetShelfAddressInfoRsp(PicmgMessage): __cmdid__ = constants.CMDID_GET_SHELF_ADDRESS_INFO __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), RemainingBytes('shelf_address'), ) @register_message_class class FruControlReq(PicmgMessage): __cmdid__ = constants.CMDID_FRU_CONTROL __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('fru_id', 1), UnsignedInt('option', 1), ) @register_message_class class FruControlRsp(PicmgMessage): __cmdid__ = constants.CMDID_FRU_CONTROL __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), RemainingBytes('rsp_data'), ) @register_message_class class GetFruControlCapabilitiesReq(PicmgMessage): __cmdid__ = constants.CMDID_FRU_CONTROL_CAPABILITIES __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('fru_id', 1), ) @register_message_class class GetFruControlCapabilitiesRsp(PicmgMessage): __cmdid__ = constants.CMDID_FRU_CONTROL_CAPABILITIES __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), Bitfield('capabilities', 1, Bitfield.ReservedBit(1), Bitfield.Bit('warm_reset', 1), Bitfield.Bit('graceful_reboot', 1), Bitfield.Bit('diagnostic_interrupt', 1), Bitfield.ReservedBit(4),), ) @register_message_class class SetFruActivationPolicyReq(PicmgMessage): __cmdid__ = constants.CMDID_SET_FRU_ACTIVATION_POLICY __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('fru_id', 1), Bitfield('mask', 1, Bitfield.Bit('activation_locked', 1, default=0), Bitfield.Bit('deactivation_locked', 1, default=0), Bitfield.ReservedBit(6),), Bitfield('set', 1, Bitfield.Bit('activation_locked', 1, default=0), Bitfield.Bit('deactivation_locked', 1, default=0), Bitfield.ReservedBit(6),), ) @register_message_class class SetFruActivationPolicyRsp(PicmgMessage): __cmdid__ = constants.CMDID_SET_FRU_ACTIVATION_POLICY __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), ) @register_message_class class GetFruActivationPolicyReq(PicmgMessage): __cmdid__ = constants.CMDID_GET_FRU_ACTIVATION_POLICY __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('fru_id', 1), ) @register_message_class class GetFruActivationPolicyRsp(PicmgMessage): __cmdid__ = constants.CMDID_GET_FRU_ACTIVATION_POLICY __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), Bitfield('policy', 1, Bitfield.Bit('activation_locked', 1, default=0), Bitfield.Bit('deactivation_locked', 1, default=0), Bitfield.ReservedBit(6),), ) @register_message_class class SetFruActivationReq(PicmgMessage): __cmdid__ = constants.CMDID_SET_FRU_ACTIVATION __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('fru_id', 1), UnsignedInt('control', 1), ) @register_message_class class SetFruActivationRsp(PicmgMessage): __cmdid__ = constants.CMDID_SET_FRU_ACTIVATION __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), ) @register_message_class class GetDeviceLocatorRecordIdReq(PicmgMessage): __cmdid__ = constants.CMDID_GET_DEVLOC_RECORD_ID __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('fru_id', 1), ) @register_message_class class GetDeviceLocatorRecordIdRsp(PicmgMessage): __cmdid__ = constants.CMDID_GET_DEVLOC_RECORD_ID __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('record_id', 2), ) @register_message_class class GetFruLedPropertiesReq(PicmgMessage): __cmdid__ = constants.CMDID_GET_FRU_LED_PROPERTIES __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('fru_id', 1), ) @register_message_class class GetFruLedPropertiesRsp(PicmgMessage): __cmdid__ = constants.CMDID_GET_FRU_LED_PROPERTIES __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), Bitfield('general_status_led_properties', 1, Bitfield.Bit('blue_led', 1), Bitfield.Bit('led1', 1), Bitfield.Bit('led2', 1), Bitfield.Bit('led3', 1), Bitfield.ReservedBit(4),), UnsignedInt('application_specific_led_count', 1), ) @register_message_class class GetFruLedColorCapabilitiesReq(PicmgMessage): __cmdid__ = constants.CMDID_GET_FRU_LED_COLOR_CAPABILITIES __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('fru_id', 1), UnsignedInt('led_id', 1), ) @register_message_class class GetFruLedColorCapabilitiesRsp(PicmgMessage): __cmdid__ = constants.CMDID_GET_FRU_LED_COLOR_CAPABILITIES __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), Bitfield('color_capabilities', 1, Bitfield.ReservedBit(1), Bitfield.Bit('blue', 1), Bitfield.Bit('red', 1), Bitfield.Bit('green', 1), Bitfield.Bit('amber', 1), Bitfield.Bit('orange', 1), Bitfield.Bit('white', 1), Bitfield.ReservedBit(1)), UnsignedIntMask('local_def_color', 1, 0x0f), UnsignedIntMask('override_def_color', 1, 0x0f), ) @register_message_class class GetPowerLevelReq(PicmgMessage): __cmdid__ = constants.CMDID_GET_POWER_LEVEL __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('fru_id', 1), UnsignedInt('power_type', 1), ) @register_message_class class GetPowerLevelRsp(PicmgMessage): __cmdid__ = constants.CMDID_GET_POWER_LEVEL __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), Bitfield('properties', 1, Bitfield.Bit('power_level', 5, 0), Bitfield.ReservedBit(2, 0), Bitfield.Bit('dynamic_power_configuration', 1, 0),), UnsignedInt('delay_to_stable_power', 1), UnsignedInt('power_multiplier', 1), RemainingBytes('power_draw'), ) @register_message_class class GetFanSpeedPropertiesReq(PicmgMessage): __cmdid__ = constants.CMDID_GET_FAN_SPEED_PROPERTIES __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('fru_id', 1), ) @register_message_class class GetFanSpeedPropertiesRsp(PicmgMessage): __cmdid__ = constants.CMDID_GET_FAN_SPEED_PROPERTIES __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('minimum_speed_level', 1), UnsignedInt('maximum_speed_level', 1), UnsignedInt('normal_operation_level', 1), Bitfield('properties', 1, Bitfield.ReservedBit(7, 0), Bitfield.Bit('local_control_supported', 1),), ) @register_message_class class SetFanLevelReq(PicmgMessage): __cmdid__ = constants.CMDID_SET_FAN_LEVEL __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('fru_id', 1), UnsignedInt('fan_level', 1), UnsignedInt('extra_byte', 1), ) @register_message_class class SetFanLevelRsp(PicmgMessage): __cmdid__ = constants.CMDID_SET_FAN_LEVEL __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), ) @register_message_class class GetFanLevelReq(PicmgMessage): __cmdid__ = constants.CMDID_GET_FAN_LEVEL __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('fru_id', 1), ) @register_message_class class GetFanLevelRsp(PicmgMessage): __cmdid__ = constants.CMDID_GET_FAN_LEVEL __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('override_fan_level', 1), Optional( RemainingBytes('data'), ) ) @register_message_class class SetFruLedStateReq(PicmgMessage): __cmdid__ = constants.CMDID_SET_FRU_LED_STATE __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('fru_id', 1), UnsignedInt('led_id', 1), UnsignedInt('led_function', 1), UnsignedInt('on_duration', 1), UnsignedIntMask('color', 1, 0x0f), ) @register_message_class class SetFruLedStateRsp(PicmgMessage): __cmdid__ = constants.CMDID_SET_FRU_LED_STATE __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), ) @register_message_class class GetFruLedStateReq(PicmgMessage): __cmdid__ = constants.CMDID_GET_FRU_LED_STATE __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('fru_id', 1), UnsignedInt('led_id', 1), ) @register_message_class class GetFruLedStateRsp(PicmgMessage): __cmdid__ = constants.CMDID_GET_FRU_LED_STATE __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 def _cond_override(obj): return (obj.led_states.override_en == 1 or obj.led_states.lamp_test_en == 1) def _cond_lamp_test(obj): return obj.led_states.lamp_test_en == 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), Bitfield('led_states', 1, Bitfield.Bit('local_avail', 1), Bitfield.Bit('override_en', 1), Bitfield.Bit('lamp_test_en', 1), Bitfield.ReservedBit(5)), UnsignedInt('local_function', 1), UnsignedInt('local_on_duration', 1), UnsignedIntMask('local_color', 1, 0x0f), Conditional(_cond_override, UnsignedInt('override_function', 1)), Conditional(_cond_override, UnsignedInt('override_on_duration', 1)), Conditional(_cond_override, UnsignedIntMask('override_color', 1, 0x0f)), Conditional(_cond_lamp_test, UnsignedIntMask('lamp_test_duration', 1, 0x7f)), ) @register_message_class class SetPortStateReq(PicmgMessage): __cmdid__ = constants.CMDID_SET_PORT_STATE __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), Bitfield('link_info', 4, Bitfield.Bit('channel', 6), Bitfield.Bit('interface', 2), Bitfield.Bit('port_0', 1), Bitfield.Bit('port_1', 1), Bitfield.Bit('port_2', 1), Bitfield.Bit('port_3', 1), Bitfield.Bit('type', 4), Bitfield.Bit('sig_class', 4, 0), Bitfield.Bit('type_extension', 4), Bitfield.Bit('grouping_id', 8, 0),), UnsignedInt('state', 1), ) @register_message_class class SetPortStateRsp(PicmgMessage): __cmdid__ = constants.CMDID_SET_PORT_STATE __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), ) @register_message_class class GetPortStateReq(PicmgMessage): __cmdid__ = constants.CMDID_GET_PORT_STATE __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), Bitfield('channel', 1, Bitfield.Bit('number', 6), Bitfield.Bit('interface', 2),), ) @register_message_class class GetPortStateRsp(PicmgMessage): __cmdid__ = constants.CMDID_GET_PORT_STATE __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), RemainingBytes('data'), ) @register_message_class class SetSignalingClassReq(PicmgMessage): __cmdid__ = constants.CMDID_SET_CHANNEL_SIGNALING_CLASS __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), Bitfield('channel_info', 1, Bitfield.Bit('channel_number', 6, 0), Bitfield.Bit('interface', 2, 0),), Bitfield('channel_signaling', 1, Bitfield.Bit('class_capability', 4, 0), Bitfield.ReservedBit(4)), ) @register_message_class class SetSignalingClassRsp(PicmgMessage): __cmdid__ = constants.CMDID_SET_CHANNEL_SIGNALING_CLASS __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), ) @register_message_class class GetSignalingClassReq(PicmgMessage): __cmdid__ = constants.CMDID_GET_CHANNEL_SIGNALING_CLASS __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), Bitfield('channel_info', 1, Bitfield.Bit('channel_number', 6, 0), Bitfield.Bit('interface', 2, 0),), ) @register_message_class class GetSignalingClassRsp(PicmgMessage): __cmdid__ = constants.CMDID_GET_CHANNEL_SIGNALING_CLASS __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), Bitfield('channel_info', 1, Bitfield.Bit('channel_number', 6, 0), Bitfield.Bit('interface', 2, 0),), Bitfield('channel_signaling', 1, Bitfield.Bit('class_capability', 4, 0), Bitfield.ReservedBit(4)), ) @register_message_class class GetLocationInformationReq(PicmgMessage): __cmdid__ = constants.CMDID_GET_LOCATION_INFO __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), Bitfield('info', 1, Bitfield.Bit('carrier_number', 5, 0), Bitfield.ReservedBit(1), Bitfield.Bit('mcs', 2, 0),), UnsignedInt('site_number', 1), UnsignedInt('site_type', 1), ) @register_message_class class GetLocationInformationRsp(PicmgMessage): __cmdid__ = constants.CMDID_GET_LOCATION_INFO __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('slot_number', 1), UnsignedInt('tier_number', 1), Bitfield('info', 1, Bitfield.ReservedBit(5), Bitfield.Bit('carrier_orientation', 1, 0), Bitfield.Bit('tier_number', 1, 0), Bitfield.Bit('slot_number', 1, 0),), UnsignedInt('origin_x', 2), UnsignedInt('origin_y', 2), ) @register_message_class class SendPowerChannelControlReq(PicmgMessage): __cmdid__ = constants.CMDID_POWER_CHANNEL_CONTROL __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('channel', 1), UnsignedInt('control', 1), UnsignedInt('current_limit', 1), UnsignedInt('primary_pm', 1), UnsignedInt('backup_pm', 1), ) @register_message_class class SendPowerChannelControlRsp(PicmgMessage): __cmdid__ = constants.CMDID_POWER_CHANNEL_CONTROL __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), ) @register_message_class class GetPowerChannelStatusReq(PicmgMessage): __cmdid__ = constants.CMDID_GET_POWER_CHANNEL_STATUS __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('starting_power_channel_number', 1), UnsignedInt('power_channel_count', 1), ) @register_message_class class GetPowerChannelStatusRsp(PicmgMessage): __cmdid__ = constants.CMDID_GET_POWER_CHANNEL_STATUS __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('max_power_channel_number', 1), Bitfield('global_status', 1, Bitfield.Bit('role', 1, 0), Bitfield.Bit('management_power_good', 1, 0), Bitfield.Bit('payload_power_good', 1, 0), Bitfield.Bit('unidentified_fault', 1, 0), Bitfield.ReservedBit(4),), RemainingBytes('data'), ) @register_message_class class SendPmHeartbeatReq(PicmgMessage): __cmdid__ = constants.CMDID_PM_HEARTBEAT __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('timeout', 1), Bitfield('ps1', 1, Bitfield.Bit('mch_1', 1, 0), Bitfield.Bit('mch_2', 1, 0), Bitfield.ReservedBit(6),), ) @register_message_class class SendPmHeartbeatRsp(PicmgMessage): __cmdid__ = constants.CMDID_PM_HEARTBEAT __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), ) @register_message_class class GetTelcoAlarmCapabilityReq(PicmgMessage): __cmdid__ = constants.CMDID_GET_TELCO_ALARM_CAPABILITY __netfn__ = constants.NETFN_GROUP_EXTENSION __fields__ = ( GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), UnsignedInt('fru_id', 1), ) @register_message_class class GetTelcoAlarmCapabilityRsp(PicmgMessage): __cmdid__ = constants.CMDID_GET_TELCO_ALARM_CAPABILITY __netfn__ = constants.NETFN_GROUP_EXTENSION | 1 __fields__ = ( CompletionCode(), GroupExtensionIdentifier('picmg_identifier', PICMG_IDENTIFIER), Bitfield('alarm_capabilities', 1, Bitfield.Bit('critical_alarm', 1, 0), Bitfield.Bit('major_alarm', 1, 0), Bitfield.Bit('minor_alarm', 1, 0), Bitfield.Bit('power_alarm', 1, 0), Bitfield.Bit('test_alarm', 1, 0), Bitfield.Bit('autonomous_alarm_cutoff', 1, 0), Bitfield.Bit('autonomous_minor_reset', 1, 0), Bitfield.Bit('autonomous_majorreset', 1, 0),), )