1e7e9171eSGeorge Keishing#!/usr/bin/env python3 270e14187SSridevi Ramesh 370e14187SSridevi Rameshr""" 470e14187SSridevi RameshContains PLDM-related constants. 570e14187SSridevi Ramesh""" 670e14187SSridevi Ramesh 7*20f38712SPatrick WilliamsPLDM_SUPPORTED_TYPES = ["base", "platform", "bios", "fru", "oem-ibm"] 84d488571SRahul Maheshwari 9c4e1cbacSSridevi Ramesh# PLDM types. 10*20f38712SPatrick WilliamsPLDM_TYPE_BASE = {"VALUE": "00", "STRING": "base"} 11*20f38712SPatrick WilliamsPLDM_TYPE_PLATFORM = {"VALUE": "02", "STRING": "platform"} 12*20f38712SPatrick WilliamsPLDM_TYPE_BIOS = {"VALUE": "03", "STRING": "bios"} 13*20f38712SPatrick WilliamsPLDM_TYPE_FRU = {"VALUE": "04", "STRING": "fru"} 14*20f38712SPatrick WilliamsPLDM_TYPE_OEM = {"VALUE": "63", "STRING": "oem-ibm"} 15*20f38712SPatrick WilliamsPLDM_SUPPORTED_TYPES = [ 16*20f38712SPatrick Williams "0(base)", 17*20f38712SPatrick Williams "2(platform)", 18*20f38712SPatrick Williams "3(bios)", 19*20f38712SPatrick Williams "4(fru)", 20*20f38712SPatrick Williams "63(oem-ibm)", 21*20f38712SPatrick Williams] 2270e14187SSridevi Ramesh 23*20f38712SPatrick WilliamsVERSION_BASE = {"VALUE": ["f1", "f0", "f0", "00"], "STRING": "1.0.0"} 24*20f38712SPatrick WilliamsVERSION_PLATFORM = {"VALUE": ["f1", "f2", "f0", "00"], "STRING": "1.2.0"} 25*20f38712SPatrick WilliamsVERSION_BIOS = {"VALUE": ["f1", "f1", "f1", "00"], "STRING": "1.0.0"} 26*20f38712SPatrick WilliamsVERSION_FRU = {"VALUE": ["f1", "f0", "f0", "00"], "STRING": "1.0.0"} 27*20f38712SPatrick WilliamsVERSION_OEM = {"VALUE": ["f1", "f0", "f0", "00"], "STRING": "1.0.0"} 2870e14187SSridevi Ramesh 2970e14187SSridevi Ramesh 30*20f38712SPatrick WilliamsPLDM_BASE_CMDS = [ 31*20f38712SPatrick Williams "2(GetTID)", 32*20f38712SPatrick Williams "3(GetPLDMVersion)", 33*20f38712SPatrick Williams "4(GetPLDMTypes)", 34*20f38712SPatrick Williams "5(GetPLDMCommands)", 35*20f38712SPatrick Williams] 36*20f38712SPatrick WilliamsPLDM_PLATFORM_CMDS = ["57(SetStateEffecterStates)", "81(GetPDR)"] 37*20f38712SPatrick WilliamsPLDM_BIOS_CMDS = [ 38*20f38712SPatrick Williams "1(GetBIOSTable)", 39*20f38712SPatrick Williams "7(SetBIOSAttributeCurrentValue)", 40*20f38712SPatrick Williams "8(GetBIOSAttributeCurrentValueByHandle)", 41*20f38712SPatrick Williams "12(GetDateTime)", 42*20f38712SPatrick Williams "13(SetDateTime)", 43*20f38712SPatrick Williams] 44*20f38712SPatrick WilliamsPLDM_FRU_CMDS = [ 45*20f38712SPatrick Williams "1(GetFRURecordTableMetadata)", 46*20f38712SPatrick Williams "2(GetFRURecordTable)", 47*20f38712SPatrick Williams "4(GetFRURecordByOption)", 48*20f38712SPatrick Williams] 49*20f38712SPatrick WilliamsPLDM_OEM_CMDS = [ 50*20f38712SPatrick Williams "1(GetFileTable)", 51*20f38712SPatrick Williams "4(ReadFile)", 52*20f38712SPatrick Williams "5(WriteFile)", 53*20f38712SPatrick Williams "6(ReadFileInToMemory)", 54*20f38712SPatrick Williams "7(WriteFileFromMemory)", 55*20f38712SPatrick Williams "8(ReadFileByTypeIntoMemory)", 56*20f38712SPatrick Williams "9(WriteFileByTypeFromMemory)", 57*20f38712SPatrick Williams "10(NewFileAvailable)", 58*20f38712SPatrick Williams "11(ReadFileByType)", 59*20f38712SPatrick Williams "12(WriteFileByType)", 60*20f38712SPatrick Williams "13(FileAck)", 61*20f38712SPatrick Williams "240(GetAlertStatus)", 62*20f38712SPatrick Williams] 63c4e1cbacSSridevi Ramesh 64c4e1cbacSSridevi Ramesh# PLDM command format. 65c4e1cbacSSridevi Ramesh 66*20f38712SPatrick Williams""" 67c4e1cbacSSridevi Rameshe.g. : GetPLDMVersion usage 68c4e1cbacSSridevi Ramesh 69c4e1cbacSSridevi Rameshpldmtool base GetPLDMVersion -t <pldm_type> 70c4e1cbacSSridevi Ramesh 71c4e1cbacSSridevi Rameshpldm supported types 72c4e1cbacSSridevi Ramesh 73c4e1cbacSSridevi Rameshbase->0,platform->2,bios->3,fru->4 74c4e1cbacSSridevi Ramesh 75*20f38712SPatrick Williams""" 76*20f38712SPatrick WilliamsCMD_GETPLDMVERSION = "base GetPLDMVersion -t %s" 77c4e1cbacSSridevi Ramesh 78*20f38712SPatrick Williams""" 79c4e1cbacSSridevi Rameshe.g. : PLDM raw command usage 80c4e1cbacSSridevi Ramesh 81c4e1cbacSSridevi Rameshpldmtool raw -d 0x80 0x00 0x03 0x00 0x00 0x00 0x00 0x01 0x00 82c4e1cbacSSridevi Ramesh 83c4e1cbacSSridevi Rameshpldm raw -d 0x<header> 0x<pldm_type> 0x<pldm_cmd_type> 0x<payload_data> 84*20f38712SPatrick Williams""" 85c4e1cbacSSridevi Ramesh 86*20f38712SPatrick WilliamsCMD_PLDMTOOL_RAW = "raw -d 0x80" + "0x%s" + " " + "0x%s" 87c4e1cbacSSridevi Ramesh 88c4e1cbacSSridevi Ramesh 89c4e1cbacSSridevi Ramesh# PLDM command payload data. 90c4e1cbacSSridevi Ramesh 91*20f38712SPatrick WilliamsPAYLOAD_GetPLDMVersion = ( # %(TransferOperationFlag, PLDMType) 92*20f38712SPatrick Williams " 0x00 0x00 0x00 0x00 0x%s 0x%s" 93*20f38712SPatrick Williams) 944d488571SRahul Maheshwari 954d488571SRahul Maheshwari 96*20f38712SPatrick Williams""" 971495bc4fSSridevi Rameshe.g. : SetDateTime usage 981495bc4fSSridevi Ramesh 991495bc4fSSridevi Rameshpldmtool bios SetDateTime -d <YYYYMMDDHHMMSS> 1001495bc4fSSridevi Ramesh 101*20f38712SPatrick Williams""" 102*20f38712SPatrick WilliamsCMD_SETDATETIME = "bios SetDateTime -d %s" 103fe52e405SSridevi Ramesh 104fe52e405SSridevi Ramesh 105*20f38712SPatrick WilliamsCMD_GETPDR = "platform GetPDR -d %s" 106fe52e405SSridevi Ramesh 107*20f38712SPatrick Williams""" 108fe52e405SSridevi Rameshe.g. : SetStateEffecterStates usage 109fe52e405SSridevi Ramesh 110ca3223a6SSridevi Rameshpldmtool platform GetPDR -i <effter_handle> -c <count> -d <effecterID, effecterState> 111fe52e405SSridevi Ramesh 112ca3223a6SSridevi Rameshpldmtool platform SetStateEffecterStates -i 1 -c 1 -d 1 1 113*20f38712SPatrick Williams""" 114fe52e405SSridevi Ramesh 115*20f38712SPatrick WilliamsCMD_SETSTATEEFFECTERSTATES = ( 116*20f38712SPatrick Williams "platform SetStateEffecterStates -i %s -c %s -d %s" 117*20f38712SPatrick Williams) 118fe52e405SSridevi Ramesh 119fe52e405SSridevi Ramesh# GetPDR parsed response message for record handle. 120fe52e405SSridevi Ramesh# Dictionary value array holds the expected output for record handle 1, 2. 121fe52e405SSridevi Ramesh# 122fe52e405SSridevi Ramesh# Note : 123fe52e405SSridevi Ramesh# Record handle - 0 is default & has same behaviour as record handle 1 124fe52e405SSridevi Ramesh# Only record handle 0, 1, 2 are supported as of now. 125fe52e405SSridevi Ramesh 126538d18d1SSridevi RameshRESPONSE_DICT_GETPDR_SETSTATEEFFECTER = { 127*20f38712SPatrick Williams "PDRHeaderVersion": [1], 128*20f38712SPatrick Williams "PDRType": ["State Effecter PDR"], 129*20f38712SPatrick Williams "recordChangeNumber": [0], 130*20f38712SPatrick Williams "effecterID": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 131*20f38712SPatrick Williams "entityType": [ 132*20f38712SPatrick Williams "Virtual Machine Manager", 133*20f38712SPatrick Williams "System chassis (main enclosure)", 134*20f38712SPatrick Williams "System Firmware", 135*20f38712SPatrick Williams "Processor Module", 136*20f38712SPatrick Williams "32801(OEM)", 137*20f38712SPatrick Williams "Management Controller", 138*20f38712SPatrick Williams "24577(OEM)", 139*20f38712SPatrick Williams ], 140*20f38712SPatrick Williams "entityInstanceNumber": [0, 1, 2, 3, 4], 141*20f38712SPatrick Williams "containerID": [0, 1], 142*20f38712SPatrick Williams "effecterSemanticID": [0], 143*20f38712SPatrick Williams "effecterInit": ["noInit"], 144*20f38712SPatrick Williams "effecterDescriptionPDR": [False], 145*20f38712SPatrick Williams "compositeEffecterCount": [1], 146*20f38712SPatrick Williams} 147fe52e405SSridevi Ramesh 148538d18d1SSridevi RameshRESPONSE_DICT_GETPDR_FRURECORDSETIDENTIFIER = { 149*20f38712SPatrick Williams "PDRHeaderVersion": [1], 150*20f38712SPatrick Williams "PDRType": ["FRU Record Set PDR"], 151*20f38712SPatrick Williams "recordChangeNumber": [0], 152*20f38712SPatrick Williams "dataLength": [10], 153*20f38712SPatrick Williams "entityType": [ 154*20f38712SPatrick Williams "System Board", 155*20f38712SPatrick Williams "Chassis front panel board (control panel)", 156*20f38712SPatrick Williams "Management Controller", 157*20f38712SPatrick Williams "OEM", 158*20f38712SPatrick Williams "Power converter", 159*20f38712SPatrick Williams "System (logical)", 160*20f38712SPatrick Williams "System chassis (main enclosure)", 161*20f38712SPatrick Williams "Chassis front panel board (control panel)", 162*20f38712SPatrick Williams "Processor Module", 163*20f38712SPatrick Williams "Memory Module", 164*20f38712SPatrick Williams "Power Supply", 165*20f38712SPatrick Williams "24576(OEM)", 166*20f38712SPatrick Williams "60(OEM)", 167*20f38712SPatrick Williams "Processor", 168*20f38712SPatrick Williams "142(OEM)", 169*20f38712SPatrick Williams ], 170*20f38712SPatrick Williams "containerID": [0, 1, 2, 3], 171*20f38712SPatrick Williams} 172538d18d1SSridevi Ramesh 173538d18d1SSridevi RameshRESPONSE_DICT_GETPDR_PDRENTITYASSOCIATION = { 174*20f38712SPatrick Williams "PDRHeaderVersion": [1], 175*20f38712SPatrick Williams "PDRType": ["Entity Association PDR"], 176*20f38712SPatrick Williams "recordChangeNumber": [0], 177*20f38712SPatrick Williams "containerID": [1, 2, 3], 178*20f38712SPatrick Williams "associationtype": ["Physical"], 179*20f38712SPatrick Williams "containerentityType": [ 180*20f38712SPatrick Williams "System Board", 181*20f38712SPatrick Williams "System (logical)", 182*20f38712SPatrick Williams "System chassis (main enclosure)", 183*20f38712SPatrick Williams ], 184*20f38712SPatrick Williams} 185538d18d1SSridevi Ramesh 186dfc7fcb7SSridevi RameshRESPONSE_DICT_GETPDR_STATESENSORPDR = { 187*20f38712SPatrick Williams "entityType": [ 188*20f38712SPatrick Williams "Communication Channel", 189*20f38712SPatrick Williams "Connector", 190*20f38712SPatrick Williams "Processor Module", 191*20f38712SPatrick Williams "32774(OEM)", 192*20f38712SPatrick Williams "57346(OEM)", 193*20f38712SPatrick Williams "57347(OEM)", 194*20f38712SPatrick Williams "32801(OEM)", 195*20f38712SPatrick Williams "91(OEM)", 196*20f38712SPatrick Williams "5(OEM)", 197*20f38712SPatrick Williams "24577(OEM)", 198*20f38712SPatrick Williams ], 199*20f38712SPatrick Williams "sensorInit": ["noInit"], 200*20f38712SPatrick Williams "sensorAuxiliaryNamesPDR": [False], 201*20f38712SPatrick Williams} 202961050baSSridevi Ramesh 203961050baSSridevi RameshRESPONSE_DICT_GETPDR_TERMINUSLOCATORPDR = { 204*20f38712SPatrick Williams "PDRHeaderVersion": [1], 205*20f38712SPatrick Williams "PDRType": ["Terminus Locator PDR"], 206*20f38712SPatrick Williams "recordChangeNumber": [0], 207*20f38712SPatrick Williams "validity": ["valid"], 208*20f38712SPatrick Williams "TID": [0, 1, 208], 209*20f38712SPatrick Williams "containerID": [0, 1], 210*20f38712SPatrick Williams "terminusLocatorType": ["MCTP_EID"], 211*20f38712SPatrick Williams "terminusLocatorValueSize": [1], 212*20f38712SPatrick Williams} 213961050baSSridevi Ramesh 214961050baSSridevi RameshRESPONSE_DICT_GETPDR_NUMERICEFFECTERPDR = { 215*20f38712SPatrick Williams "PDRHeaderVersion": [1], 216*20f38712SPatrick Williams "PDRType": ["Numeric Effecter PDR"], 217*20f38712SPatrick Williams "recordChangeNumber": [0], 218*20f38712SPatrick Williams "entityInstanceNumber": [0, 1], 219*20f38712SPatrick Williams "containerID": [0], 220*20f38712SPatrick Williams "effecterSemanticID": [0], 221*20f38712SPatrick Williams "effecterInit": [0], 222*20f38712SPatrick Williams "effecterAuxiliaryNames": [False], 223*20f38712SPatrick Williams "baseUnit": [0, 72, 21], 224*20f38712SPatrick Williams "unitModifier": [0], 225*20f38712SPatrick Williams "baseOEMUnitHandle": [0], 226*20f38712SPatrick Williams "auxUnit": [0], 227*20f38712SPatrick Williams "auxUnitModifier": [0], 228*20f38712SPatrick Williams "auxrateUnit": [0], 229*20f38712SPatrick Williams "auxOEMUnitHandle": [0], 230*20f38712SPatrick Williams "resolution": [1, 0], 231*20f38712SPatrick Williams "offset": [0], 232*20f38712SPatrick Williams "accuracy": [0], 233*20f38712SPatrick Williams "plusTolerance": [0], 234*20f38712SPatrick Williams "minusTolerance": [0], 235*20f38712SPatrick Williams "stateTransitionInterval": [0], 236*20f38712SPatrick Williams "TransitionInterval": [0], 237*20f38712SPatrick Williams "minSettable": [0], 238*20f38712SPatrick Williams "rangeFieldSupport": [0], 239*20f38712SPatrick Williams "nominalValue": [0], 240*20f38712SPatrick Williams "normalMax": [0], 241*20f38712SPatrick Williams "normalMin": [0], 242*20f38712SPatrick Williams "ratedMax": [0], 243*20f38712SPatrick Williams "ratedMin": [0], 244*20f38712SPatrick Williams} 245dfc7fcb7SSridevi Ramesh 246538d18d1SSridevi RameshPLDM_PDR_TYPES = { 247*20f38712SPatrick Williams "PLDM_STATE_EFFECTER_PDR": "State Effecter PDR", 248*20f38712SPatrick Williams "PLDM_PDR_FRU_RECORD_SET": "FRU Record Set PDR", 249*20f38712SPatrick Williams "PLDM_PDR_ENTITY_ASSOCIATION": "Entity Association PDR", 250*20f38712SPatrick Williams "PLDM_STATE_SENSOR_PDR": "State Sensor PDR", 251*20f38712SPatrick Williams "PLDM_NUMERIC_EFFECTER_PDR": "Numeric Effecter PDR", 252*20f38712SPatrick Williams "PLDM_TERMINUS_LOCATOR_PDR": "Terminus Locator PDR", 253*20f38712SPatrick Williams "PLDM_COMPACT_NUMERIC_SENSOR_PDR": "21", 254*20f38712SPatrick Williams} 255f60581b6SSridevi Ramesh 256961050baSSridevi RameshRESPONSE_LIST_GETBIOSTABLE_ATTRVALTABLE = [ 257*20f38712SPatrick Williams "BIOSString", 258*20f38712SPatrick Williams "BIOSInteger", 259*20f38712SPatrick Williams "BIOSEnumeration", 260*20f38712SPatrick Williams] 261