feat(master : tool) fru parse工具添加chassis域的解析
This commit is contained in:
parent
2d3fb02911
commit
534cf9a68d
@ -1,4 +1,5 @@
|
|||||||
import os
|
import os
|
||||||
|
import time
|
||||||
|
|
||||||
fru_file="frudata.txt"
|
fru_file="frudata.txt"
|
||||||
internal = []
|
internal = []
|
||||||
@ -6,26 +7,61 @@ chassis = []
|
|||||||
board = []
|
board = []
|
||||||
product = []
|
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):
|
def array_to_string(arr):
|
||||||
result = ""
|
result = ""
|
||||||
for element in arr:
|
for element in arr:
|
||||||
result += chr(element)
|
result += chr(element)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def parse_internal():
|
|
||||||
pass
|
|
||||||
|
|
||||||
def parse_chassis():
|
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():
|
def parse_board():
|
||||||
print("")
|
print("")
|
||||||
print("Board Field")
|
print("Board Field")
|
||||||
board_mfg_time = board[3:5]
|
|
||||||
|
|
||||||
cnt=5
|
pass_time = (board[3] + board[4]*256 + board[5]*256*256) * 60
|
||||||
board_manufactor_length=board[cnt+1]-192
|
pass_sec=pass_time + 820454400
|
||||||
cnt+=2
|
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]
|
board_manufactor=board[cnt:cnt+board_manufactor_length]
|
||||||
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]
|
board_id=board[cnt:cnt+board_id_length]
|
||||||
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 Manufacturer : " + array_to_string(board_manufactor))
|
||||||
print("Board Product Name : " + array_to_string(board_product_name))
|
print("Board Product Name : " + array_to_string(board_product_name))
|
||||||
print("Board Serial Number: " + array_to_string(board_sn))
|
print("Board Serial Number: " + array_to_string(board_sn))
|
||||||
@ -121,8 +158,6 @@ def parse_product():
|
|||||||
|
|
||||||
def parse_fru_data():
|
def parse_fru_data():
|
||||||
print("===> Start Parse Fru data")
|
print("===> Start Parse Fru data")
|
||||||
if len(internal) > 0:
|
|
||||||
parse_internal()
|
|
||||||
|
|
||||||
if len(chassis) > 0:
|
if len(chassis) > 0:
|
||||||
parse_chassis()
|
parse_chassis()
|
||||||
@ -141,15 +176,12 @@ def split_fru_data(data):
|
|||||||
board_offset = header[3] * 8
|
board_offset = header[3] * 8
|
||||||
product_offset = header[4] * 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:
|
if chassis_offset > 0:
|
||||||
chassis_data_length = data[chassis_offset+1]*8
|
chassis_data_length = data[chassis_offset+1]*8
|
||||||
global chassis
|
global chassis
|
||||||
chassis = data[chassis_offset : chassis_offset+chassis_data_length ]
|
chassis = data[chassis_offset : chassis_offset+chassis_data_length ]
|
||||||
|
print("chassis data")
|
||||||
|
print(chassis)
|
||||||
|
|
||||||
if board_offset > 0:
|
if board_offset > 0:
|
||||||
board_data_length = data[board_offset+1]*8
|
board_data_length = data[board_offset+1]*8
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user