feat(master : tool) fru parse工具添加chassis域的解析
This commit is contained in:
parent
2d3fb02911
commit
534cf9a68d
@ -1,4 +1,5 @@
|
||||
import os
|
||||
import time
|
||||
|
||||
fru_file="frudata.txt"
|
||||
internal = []
|
||||
@ -6,26 +7,61 @@ chassis = []
|
||||
board = []
|
||||
product = []
|
||||
|
||||
chassis_list = [ "NULL", "Others", "Unkownm", "Desktop", "Low Profile Desktop", "Pizza Box",
|
||||
"Mini Tower", "Tower", "Portable", "Laptop", "Notebook", "Hand Held",
|
||||
"Docking Station", "All in One", "Sub Notebook", "Space-saving", "Lunch Box",
|
||||
"Main Server Chassis", "Expansion Chassis", "SubChassis", "Bus Expansion Chassis",
|
||||
"Peripheral Chassis", "RAID Chassis", "Rack Mount Chassis", "Sealed-case PC",
|
||||
"Multi-system chassis", "Compact PCI", "Advanced TCA", "Blade", "Blade Enclosure",
|
||||
"Tablet", "Convertible", "Detachable", "IoT Gateway", "Embedded PC", "Mini PC", "Stick PC"]
|
||||
|
||||
def array_to_string(arr):
|
||||
result = ""
|
||||
for element in arr:
|
||||
result += chr(element)
|
||||
return result
|
||||
|
||||
def parse_internal():
|
||||
pass
|
||||
|
||||
def parse_chassis():
|
||||
pass
|
||||
print("")
|
||||
print("Chassis Field")
|
||||
|
||||
chassis_type_num = chassis[2]
|
||||
chassis_type = chassis_list[chassis_type_num]
|
||||
|
||||
cnt = 3
|
||||
chassis_part_number_len = chassis[cnt] - 192
|
||||
cnt += 1
|
||||
chassis_part_number = chassis[cnt : cnt+chassis_part_number_len]
|
||||
cnt += chassis_part_number_len
|
||||
|
||||
chassis_sn_len = chassis[cnt] - 192
|
||||
cnt += 1
|
||||
chassis_sn = chassis[cnt : cnt+chassis_sn_len]
|
||||
cnt += chassis_sn_len
|
||||
|
||||
print("Chassis Type : " + chassis_type)
|
||||
print("Chassis Part Number : " + array_to_string(chassis_part_number))
|
||||
print("Chassis Serial Number : " + array_to_string(chassis_sn))
|
||||
|
||||
while chassis[cnt] != 193:
|
||||
chassis_OEM_length=chassis[cnt]-192
|
||||
cnt+=1
|
||||
chassis_oem=chassis[cnt:cnt+chassis_OEM_length]
|
||||
cnt=cnt+chassis_OEM_length
|
||||
print("Chassis Extra : " + array_to_string(chassis_oem))
|
||||
|
||||
|
||||
def parse_board():
|
||||
print("")
|
||||
print("Board Field")
|
||||
board_mfg_time = board[3:5]
|
||||
|
||||
cnt=5
|
||||
board_manufactor_length=board[cnt+1]-192
|
||||
cnt+=2
|
||||
pass_time = (board[3] + board[4]*256 + board[5]*256*256) * 60
|
||||
pass_sec=pass_time + 820454400
|
||||
board_mfg_time = time.ctime(pass_sec)
|
||||
|
||||
cnt=6
|
||||
board_manufactor_length=board[cnt]-192
|
||||
cnt+=1
|
||||
board_manufactor=board[cnt:cnt+board_manufactor_length]
|
||||
cnt=cnt+board_manufactor_length
|
||||
|
||||
@ -49,6 +85,7 @@ def parse_board():
|
||||
board_id=board[cnt:cnt+board_id_length]
|
||||
cnt=cnt+board_id_length
|
||||
|
||||
print("Board Mfg Time : " + board_mfg_time)
|
||||
print("Board Manufacturer : " + array_to_string(board_manufactor))
|
||||
print("Board Product Name : " + array_to_string(board_product_name))
|
||||
print("Board Serial Number: " + array_to_string(board_sn))
|
||||
@ -121,8 +158,6 @@ def parse_product():
|
||||
|
||||
def parse_fru_data():
|
||||
print("===> Start Parse Fru data")
|
||||
if len(internal) > 0:
|
||||
parse_internal()
|
||||
|
||||
if len(chassis) > 0:
|
||||
parse_chassis()
|
||||
@ -141,15 +176,12 @@ def split_fru_data(data):
|
||||
board_offset = header[3] * 8
|
||||
product_offset = header[4] * 8
|
||||
|
||||
if internal_offset > 0:
|
||||
internal_data_length = data[internal_offset+1]*8
|
||||
global internal
|
||||
internal = data[internal_offset : internal_offset+internal_data_length]
|
||||
|
||||
if chassis_offset > 0:
|
||||
chassis_data_length = data[chassis_offset+1]*8
|
||||
global chassis
|
||||
chassis = data[chassis_offset : chassis_offset+chassis_data_length ]
|
||||
print("chassis data")
|
||||
print(chassis)
|
||||
|
||||
if board_offset > 0:
|
||||
board_data_length = data[board_offset+1]*8
|
||||
|
||||
Loading…
Reference in New Issue
Block a user