Merge 0114457cfe
into 610685d27b
This commit is contained in:
commit
500621f827
@ -4,6 +4,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
import sys
|
||||||
import time
|
import time
|
||||||
import string
|
import string
|
||||||
from ctypes import create_string_buffer
|
from ctypes import create_string_buffer
|
||||||
@ -205,6 +206,9 @@ class SfpUtil(SfpUtilBase):
|
|||||||
# Fill in write buffer
|
# Fill in write buffer
|
||||||
regval = 0x3 if lpmode else 0x1 # 0x3:Low Power Mode, 0x1:High Power Mode
|
regval = 0x3 if lpmode else 0x1 # 0x3:Low Power Mode, 0x1:High Power Mode
|
||||||
buffer = create_string_buffer(1)
|
buffer = create_string_buffer(1)
|
||||||
|
if sys.version_info[0] >= 3:
|
||||||
|
buffer[0] = regval
|
||||||
|
else:
|
||||||
buffer[0] = chr(regval)
|
buffer[0] = chr(regval)
|
||||||
|
|
||||||
# Write to eeprom
|
# Write to eeprom
|
||||||
@ -220,6 +224,22 @@ class SfpUtil(SfpUtilBase):
|
|||||||
eeprom.close()
|
eeprom.close()
|
||||||
time.sleep(0.01)
|
time.sleep(0.01)
|
||||||
|
|
||||||
|
def __read_txt_file(self, file_path):
|
||||||
|
try:
|
||||||
|
with open(file_path, 'r') as fd:
|
||||||
|
return fd.read().strip()
|
||||||
|
except IOError:
|
||||||
|
pass
|
||||||
|
return ""
|
||||||
|
|
||||||
|
def __write_txt_file(self, file_path, value):
|
||||||
|
try:
|
||||||
|
with open(file_path, 'w') as fd:
|
||||||
|
fd.write(str(value))
|
||||||
|
except Exception:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
def reset(self, port_num):
|
def reset(self, port_num):
|
||||||
if port_num < self.qsfp_port_start or port_num > self.qsfp_port_end:
|
if port_num < self.qsfp_port_start or port_num > self.qsfp_port_end:
|
||||||
return False
|
return False
|
||||||
@ -228,21 +248,20 @@ class SfpUtil(SfpUtilBase):
|
|||||||
cpld_ps = self._cpld_mapping[cpld_i]
|
cpld_ps = self._cpld_mapping[cpld_i]
|
||||||
path = "/sys/bus/i2c/devices/{0}/module_reset_{1}"
|
path = "/sys/bus/i2c/devices/{0}/module_reset_{1}"
|
||||||
port_ps = path.format(cpld_ps, port_num)
|
port_ps = path.format(cpld_ps, port_num)
|
||||||
|
|
||||||
self.__port_to_mod_rst = port_ps
|
self.__port_to_mod_rst = port_ps
|
||||||
try:
|
|
||||||
reg_file = open(self.__port_to_mod_rst, 'r+', buffering=0)
|
|
||||||
except IOError as e:
|
|
||||||
print("Error: unable to open file: %s" % str(e))
|
|
||||||
return False
|
|
||||||
|
|
||||||
# toggle reset
|
ret = self.__write_txt_file(
|
||||||
reg_file.seek(0)
|
self.__port_to_mod_rst, 1)
|
||||||
reg_file.write('1')
|
if ret is not True:
|
||||||
|
return ret
|
||||||
|
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
reg_file.seek(0)
|
ret = self.__write_txt_file(
|
||||||
reg_file.write('0')
|
self.__port_to_mod_rst, 0)
|
||||||
reg_file.close()
|
|
||||||
|
if ret is not True:
|
||||||
|
return ret
|
||||||
|
time.sleep(0.1)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user