|  | #!/usr/bin/env python3 | 
|  |  | 
|  | r""" | 
|  | Contains PLDM-related constants. | 
|  | """ | 
|  |  | 
|  | PLDM_SUPPORTED_TYPES = ['base', 'platform', 'bios', 'fru', 'oem-ibm'] | 
|  |  | 
|  | # PLDM types. | 
|  | PLDM_TYPE_BASE = {'VALUE': '00', 'STRING': 'base'} | 
|  | PLDM_TYPE_PLATFORM = {'VALUE': '02', 'STRING': 'platform'} | 
|  | PLDM_TYPE_BIOS = {'VALUE': '03', 'STRING': 'bios'} | 
|  | PLDM_TYPE_FRU = {'VALUE': '04', 'STRING': 'fru'} | 
|  | PLDM_TYPE_OEM = {'VALUE': '63', 'STRING': 'oem-ibm'} | 
|  | PLDM_SUPPORTED_TYPES = ['0(base)', '2(platform)', '3(bios)', '4(fru)', '63(oem-ibm)'] | 
|  |  | 
|  | VERSION_BASE = {'VALUE': ['f1', 'f0', 'f0', '00'], 'STRING': '1.0.0'} | 
|  | VERSION_PLATFORM = {'VALUE': ['f1', 'f2', 'f0', '00'], 'STRING': '1.2.0'} | 
|  | VERSION_BIOS = {'VALUE': ['f1', 'f1', 'f1', '00'], 'STRING': '1.0.0'} | 
|  | VERSION_FRU = {'VALUE': ['f1', 'f0', 'f0', '00'], 'STRING': '1.0.0'} | 
|  | VERSION_OEM = {'VALUE': ['f1', 'f0', 'f0', '00'], 'STRING': '1.0.0'} | 
|  |  | 
|  |  | 
|  | PLDM_BASE_CMDS = ['2(GetTID)', '3(GetPLDMVersion)', '4(GetPLDMTypes)', '5(GetPLDMCommands)'] | 
|  | PLDM_PLATFORM_CMDS = ['57(SetStateEffecterStates)', '81(GetPDR)'] | 
|  | PLDM_BIOS_CMDS = ['1(GetBIOSTable)', '7(SetBIOSAttributeCurrentValue)', | 
|  | '8(GetBIOSAttributeCurrentValueByHandle)', '12(GetDateTime)', | 
|  | '13(SetDateTime)'] | 
|  | PLDM_FRU_CMDS = ['1(GetFRURecordTableMetadata)', '2(GetFRURecordTable)', '4(GetFRURecordByOption)'] | 
|  | PLDM_OEM_CMDS = ['1(GetFileTable)', '4(ReadFile)', '5(WriteFile)', '6(ReadFileInToMemory)', | 
|  | '7(WriteFileFromMemory)', '8(ReadFileByTypeIntoMemory)', | 
|  | '9(WriteFileByTypeFromMemory)', '10(NewFileAvailable)', | 
|  | '11(ReadFileByType)', '12(WriteFileByType)', '13(FileAck)', | 
|  | '240(GetAlertStatus)'] | 
|  |  | 
|  | # PLDM command format. | 
|  |  | 
|  | ''' | 
|  | e.g. : GetPLDMVersion usage | 
|  |  | 
|  | pldmtool base GetPLDMVersion -t <pldm_type> | 
|  |  | 
|  | pldm supported types | 
|  |  | 
|  | base->0,platform->2,bios->3,fru->4 | 
|  |  | 
|  | ''' | 
|  | CMD_GETPLDMVERSION = 'base GetPLDMVersion -t %s' | 
|  |  | 
|  | ''' | 
|  | e.g. : PLDM raw command usage | 
|  |  | 
|  | pldmtool raw -d 0x80 0x00 0x03 0x00 0x00 0x00 0x00 0x01 0x00 | 
|  |  | 
|  | pldm raw -d 0x<header> 0x<pldm_type> 0x<pldm_cmd_type> 0x<payload_data> | 
|  | ''' | 
|  |  | 
|  | CMD_PLDMTOOL_RAW = 'raw -d 0x80' + '0x%s' + ' ' + '0x%s' | 
|  |  | 
|  |  | 
|  | # PLDM command payload data. | 
|  |  | 
|  | PAYLOAD_GetPLDMVersion = \ | 
|  | ' 0x00 0x00 0x00 0x00 0x%s 0x%s'    # %(TransferOperationFlag, PLDMType) | 
|  |  | 
|  |  | 
|  | ''' | 
|  | e.g. : SetDateTime usage | 
|  |  | 
|  | pldmtool bios SetDateTime -d <YYYYMMDDHHMMSS> | 
|  |  | 
|  | ''' | 
|  | CMD_SETDATETIME = 'bios SetDateTime -d %s' | 
|  |  | 
|  |  | 
|  | CMD_GETPDR = 'platform GetPDR -d %s' | 
|  |  | 
|  | ''' | 
|  | e.g. : SetStateEffecterStates usage | 
|  |  | 
|  | pldmtool platform GetPDR -i <effter_handle> -c <count> -d <effecterID, effecterState> | 
|  |  | 
|  | pldmtool platform SetStateEffecterStates -i 1 -c 1 -d 1 1 | 
|  | ''' | 
|  |  | 
|  | CMD_SETSTATEEFFECTERSTATES = 'platform SetStateEffecterStates -i %s -c %s -d %s' | 
|  |  | 
|  | # GetPDR parsed response message for record handle. | 
|  | # Dictionary value array holds the expected output for record handle 1, 2. | 
|  | # | 
|  | # Note : | 
|  | #      Record handle - 0 is default &  has same behaviour as record handle 1 | 
|  | #      Only record handle 0, 1, 2 are supported as of now. | 
|  |  | 
|  | RESPONSE_DICT_GETPDR_SETSTATEEFFECTER = { | 
|  | 'PDRHeaderVersion': [1], | 
|  | 'PDRType': ['State Effecter PDR'], | 
|  | 'recordChangeNumber': [0], | 
|  | 'effecterID': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], | 
|  | 'entityType': ['Virtual Machine Manager', 'System chassis (main enclosure)', | 
|  | 'System Firmware', 'Processor Module', '32801(OEM)', | 
|  | 'Management Controller', '24577(OEM)'], | 
|  | 'entityInstanceNumber': [0, 1, 2, 3, 4], | 
|  | 'containerID': [0, 1], | 
|  | 'effecterSemanticID': [0], | 
|  | 'effecterInit': ['noInit'], | 
|  | 'effecterDescriptionPDR': [False], | 
|  | 'compositeEffecterCount': [1]} | 
|  |  | 
|  | RESPONSE_DICT_GETPDR_FRURECORDSETIDENTIFIER = { | 
|  | 'PDRHeaderVersion': [1], | 
|  | 'PDRType': ['FRU Record Set PDR'], | 
|  | 'recordChangeNumber': [0], | 
|  | 'dataLength': [10], | 
|  | 'entityType': ['System Board', 'Chassis front panel board (control panel)', | 
|  | 'Management Controller', 'OEM', 'Power converter', | 
|  | 'System (logical)', 'System chassis (main enclosure)', | 
|  | 'Chassis front panel board (control panel)', | 
|  | 'Processor Module', 'Memory Module', 'Power Supply', | 
|  | '24576(OEM)', '60(OEM)', 'Processor', '142(OEM)'], | 
|  | 'containerID': [0, 1, 2, 3]} | 
|  |  | 
|  | RESPONSE_DICT_GETPDR_PDRENTITYASSOCIATION = { | 
|  | 'PDRHeaderVersion': [1], | 
|  | 'PDRType': ['Entity Association PDR'], | 
|  | 'recordChangeNumber': [0], | 
|  | 'containerID': [1, 2, 3], | 
|  | 'associationtype': ['Physical'], | 
|  | 'containerentityType': ['System Board', 'System (logical)', | 
|  | 'System chassis (main enclosure)']} | 
|  |  | 
|  | RESPONSE_DICT_GETPDR_STATESENSORPDR = { | 
|  | 'entityType': ['Communication Channel', 'Connector', 'Processor Module', | 
|  | '32774(OEM)', '57346(OEM)', '57347(OEM)', '32801(OEM)', | 
|  | '91(OEM)', '5(OEM)', '24577(OEM)'], | 
|  | 'sensorInit': ['noInit'], | 
|  | 'sensorAuxiliaryNamesPDR': [False]} | 
|  |  | 
|  | RESPONSE_DICT_GETPDR_TERMINUSLOCATORPDR = { | 
|  | 'PDRHeaderVersion': [1], | 
|  | 'PDRType': ['Terminus Locator PDR'], | 
|  | 'recordChangeNumber': [0], | 
|  | 'validity': ['valid'], | 
|  | 'TID': [0, 1, 208], | 
|  | 'containerID': [0, 1], | 
|  | 'terminusLocatorType': ['MCTP_EID'], | 
|  | 'terminusLocatorValueSize': [1]} | 
|  |  | 
|  | RESPONSE_DICT_GETPDR_NUMERICEFFECTERPDR = { | 
|  | 'PDRHeaderVersion': [1], | 
|  | 'PDRType': ['Numeric Effecter PDR'], | 
|  | 'recordChangeNumber': [0], | 
|  | 'entityInstanceNumber': [0, 1], | 
|  | 'containerID': [0], | 
|  | 'effecterSemanticID': [0], | 
|  | 'effecterInit': [0], | 
|  | 'effecterAuxiliaryNames': [False], | 
|  | 'baseUnit': [0, 72, 21], | 
|  | 'unitModifier': [0], | 
|  | 'baseOEMUnitHandle': [0], | 
|  | 'auxUnit': [0], | 
|  | 'auxUnitModifier': [0], | 
|  | 'auxrateUnit': [0], | 
|  | 'auxOEMUnitHandle': [0], | 
|  | 'resolution': [1, 0], | 
|  | 'offset': [0], | 
|  | 'accuracy': [0], | 
|  | 'plusTolerance': [0], | 
|  | 'minusTolerance': [0], | 
|  | 'stateTransitionInterval': [0], | 
|  | 'TransitionInterval': [0], | 
|  | 'minSettable': [0], | 
|  | 'rangeFieldSupport': [0], | 
|  | 'nominalValue': [0], | 
|  | 'normalMax': [0], | 
|  | 'normalMin': [0], | 
|  | 'ratedMax': [0], | 
|  | 'ratedMin': [0]} | 
|  |  | 
|  | PLDM_PDR_TYPES = { | 
|  | 'PLDM_STATE_EFFECTER_PDR': 'State Effecter PDR', | 
|  | 'PLDM_PDR_FRU_RECORD_SET': 'FRU Record Set PDR', | 
|  | 'PLDM_PDR_ENTITY_ASSOCIATION': 'Entity Association PDR', | 
|  | 'PLDM_STATE_SENSOR_PDR': 'State Sensor PDR', | 
|  | 'PLDM_NUMERIC_EFFECTER_PDR': 'Numeric Effecter PDR', | 
|  | 'PLDM_TERMINUS_LOCATOR_PDR': 'Terminus Locator PDR', | 
|  | 'PLDM_COMPACT_NUMERIC_SENSOR_PDR': '21'} | 
|  |  | 
|  | RESPONSE_LIST_GETBIOSTABLE_ATTRVALTABLE = [ | 
|  | 'BIOSString', 'BIOSInteger', 'BIOSEnumeration'] |