Skip to content

Commit

Permalink
Merge pull request #11 from roger530-ho/as9726_pddf_monitor
Browse files Browse the repository at this point in the history
[AS9726-32D] Change the decision of FAN direction
  • Loading branch information
bryan1978 authored Dec 4, 2023
2 parents 0016606 + 751a0a4 commit e9c5eae
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,10 @@ class FanUtil(object):
FAN_NUM_5_IDX = 5
FAN_NUM_6_IDX = 6

FAN_NODE_NUM_OF_MAP = 2
FAN_NODE_NUM_OF_MAP = 3
FAN_NODE_FAULT_IDX_OF_MAP = 1
FAN_NODE_DIR_IDX_OF_MAP = 2
FAN_NODE_PRESENT_IDX_OF_MAP = 3

BASE_VAL_PATH = '/sys/bus/i2c/devices/14-0066/{0}'
FAN_DUTY_PATH = '/sys/bus/i2c/devices/14-0066/fan_duty_cycle_percentage'
Expand All @@ -60,21 +61,27 @@ class FanUtil(object):
_fan_device_node_mapping = {
(FAN_NUM_1_IDX, FAN_NODE_FAULT_IDX_OF_MAP): 'fan1_fault',
(FAN_NUM_1_IDX, FAN_NODE_DIR_IDX_OF_MAP): 'fan1_direction',
(FAN_NUM_1_IDX, FAN_NODE_PRESENT_IDX_OF_MAP): 'fan1_present',

(FAN_NUM_2_IDX, FAN_NODE_FAULT_IDX_OF_MAP): 'fan2_fault',
(FAN_NUM_2_IDX, FAN_NODE_DIR_IDX_OF_MAP): 'fan2_direction',
(FAN_NUM_2_IDX, FAN_NODE_PRESENT_IDX_OF_MAP): 'fan2_present',

(FAN_NUM_3_IDX, FAN_NODE_FAULT_IDX_OF_MAP): 'fan3_fault',
(FAN_NUM_3_IDX, FAN_NODE_DIR_IDX_OF_MAP): 'fan3_direction',
(FAN_NUM_3_IDX, FAN_NODE_PRESENT_IDX_OF_MAP): 'fan3_present',

(FAN_NUM_4_IDX, FAN_NODE_FAULT_IDX_OF_MAP): 'fan4_fault',
(FAN_NUM_4_IDX, FAN_NODE_DIR_IDX_OF_MAP): 'fan4_direction',
(FAN_NUM_4_IDX, FAN_NODE_PRESENT_IDX_OF_MAP): 'fan4_present',

(FAN_NUM_5_IDX, FAN_NODE_FAULT_IDX_OF_MAP): 'fan5_fault',
(FAN_NUM_5_IDX, FAN_NODE_DIR_IDX_OF_MAP): 'fan5_direction',
(FAN_NUM_5_IDX, FAN_NODE_PRESENT_IDX_OF_MAP): 'fan5_present',

(FAN_NUM_6_IDX, FAN_NODE_FAULT_IDX_OF_MAP): 'fan6_fault',
(FAN_NUM_6_IDX, FAN_NODE_DIR_IDX_OF_MAP): 'fan6_direction',
(FAN_NUM_6_IDX, FAN_NODE_PRESENT_IDX_OF_MAP): 'fan6_present',
}

def _get_fan_device_node(self, fan_num, node_num):
Expand Down Expand Up @@ -177,6 +184,9 @@ def get_fan_fault(self, fan_num):
def get_fan_dir(self, fan_num):
return self._get_fan_node_val(fan_num, self.FAN_NODE_DIR_IDX_OF_MAP)

def get_fan_present(self, fan_num):
return self._get_fan_node_val(fan_num, self.FAN_NODE_PRESENT_IDX_OF_MAP)

def get_fan_duty_cycle(self):
#duty_path = self.FAN_DUTY_PATH
try:
Expand Down Expand Up @@ -209,7 +219,10 @@ def get_fan_status(self, fan_num):
logging.debug('GET. Parameter error. fan_num, %d', fan_num)
return None

if self.get_fan_fault(fan_num) is not None and self.get_fan_fault(fan_num) > 0:
if self.get_fan_fault(fan_num) is None:
return None

if self.get_fan_fault(fan_num) > 0:
logging.debug('GET. FAN fault. fan_num, %d', fan_num)
return False

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@
# HISTORY:
# mm/dd/yyyy (A.D.)#
# 04/23/2021: Michael_Shih create for as9726_32d thermal plan
# 11/23/2023: Roger
# 1. Sync the log buffer to the disk before
# powering off the DUT.
# 2. Change the decision of FAN direction
# 3. Enhance test data
# ------------------------------------------------------------------

try:
Expand Down Expand Up @@ -221,6 +226,14 @@ def match(self, *args):
#Transceiver >=77

def power_off_dut():
# Sync log buffer to disk
cmd_str = ["sync"]
status, output = getstatusoutput_noshell(cmd_str)
cmd_str = ["/sbin/fstrim", "-av"]
status, output = getstatusoutput_noshell(cmd_str)
time.sleep(3)

# Power off dut
cmd_str = ["i2cset", "-y", "-f", "19", "0x60", "0x60", "0x10"]
(status, output) = getstatusoutput_noshell(cmd_str)
return (status == 0)
Expand Down Expand Up @@ -285,7 +298,7 @@ def check_psu_loading():
count_check=0

test_temp = 0
test_temp_list = [0, 0, 0, 0, 0, 0, 0]
test_temp_list = [0] * (7 + 16) # 7 Thermal, 16 ZR/ZR+ Thermal
temp_test_data=0
test_temp_revert=0

Expand Down Expand Up @@ -319,7 +332,7 @@ def __init__(self, log_file, log_level):
if log_level == logging.DEBUG:
console = logging.StreamHandler()
console.setLevel(log_level)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
formatter = logging.Formatter('%(asctime)s %(name)-12s: %(levelname)-8s %(message)s', datefmt='%H:%M:%S')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)

Expand Down Expand Up @@ -452,14 +465,24 @@ def manage_fans(self):
count_check=0

thermal = self.thermal
fan_dir=fan.get_fan_dir(1)
f2b_dir = 0
b2f_dir = 0
for i in range (fan.FAN_NUM_1_IDX, fan.FAN_NUM_ON_MAIN_BROAD+1):
if fan.get_fan_present(i)==0:
continue
b2f_dir += fan.get_fan_dir(i) == 1
f2b_dir += fan.get_fan_dir(i) == 0
logging.debug("b2f_dir={} f2b_dir={}".format(b2f_dir, f2b_dir))
fan_dir = int(b2f_dir >= f2b_dir)

if fan_dir==1: # AFI
fan_thermal_spec = afi_thermal_spec
fan_policy=fan_policy_b2f
logging.debug("fan_policy = fan_policy_b2f")
elif fan_dir==0: # AFO
fan_thermal_spec = afo_thermal_spec
fan_policy=fan_policy_f2b
logging.debug("fan_policy = fan_policy_f2b")
else:
logging.debug( "NULL case")

Expand All @@ -483,8 +506,12 @@ def manage_fans(self):
logging.debug("Maximum avaliable port : %d", TRANSCEIVER_NUM_MAX)
logging.debug(thermal_val)
else:
for i in range(THERMAL_NUM_MAX):
for i in range(thermal.THERMAL_NUM_MAX):
thermal_val.append((TYPE_SENSOR, None, test_temp_list[i] + temp_test_data))
for port_num in monitor_port:
sfp = platform_chassis.get_sfp(port_num)
thermal_val.append((TYPE_TRANSCEIVER, sfp, test_temp_list[i + 1] + temp_test_data))
i = i + 1
logging.debug(thermal_val)
fan_fail=0

Expand Down Expand Up @@ -668,11 +695,11 @@ def main(argv):
log_file = arg

if sys.argv[1]== '-t':
if len(sys.argv)!=9:
print("temp test, need input 7 temp")
if len(sys.argv)!=(2 + 7 + 16): # 7 Thermal, 16 ZR/ZR+ Thermal
print("temp test, need input %d temp" % (7 + 16))
return 0
i=0
for x in range(2, 9):
for x in range(2, (2 + 7 + 16)): # 7 Thermal, 16 ZR/ZR+ Thermal
test_temp_list[i]= int(sys.argv[x])*1000
i=i+1
test_temp = 1
Expand Down

0 comments on commit e9c5eae

Please sign in to comment.